2015-07-27 5 views
0

Я не понимаю команду source_group в моем CMakeLists.txt. Когда я делаю это работает:source_group Команда CMake не работает

file(GLOB INPUT_HEAD KeyBoard.h Mouse.h) 
source_group("Header Files\\Input" FILES ${INPUT_HEAD}) 

Но это не работает:

file(GLOB SHADERS ../Shaders/*.txt) 
source_group("Source Files\\Shaders" FILES ${SHADERS}) 

Любые предложения о том, как решить эту проблему? (Я прочитал документацию для этой команды, я не понимаю, почему это не работает)

ответ

4

Вам нужно использовать файлы в реальной цели. Например, они должны использоваться в операторе add_library или add_executable, тогда они будут находиться в папке внутри этого проекта. Кроме того, я использую ''/'' вместо \\ в качестве разделителя. Вы также можете использовать set_property(GLOBAL PROPERTY USE_FOLDERS ON), чтобы предопределенные проекты cmake вошли в их собственную папку решений.

+0

Ahh .. Но шейдерные файлы не являются ни библиотекой, ни исполняемым. Как включить эти файлы в проект визуальной студии? Должен ли я просто оставить их и заставить пользователя открывать их в отдельном текстовом редакторе? – Edvin

+0

Пока они не имеют расширения, которое заставляет Visual Studio пытаться их создать, я пытаюсь включить ВСЕ файлы с целью, потому что мне нравится иметь доступ к ним из среды IDE, когда я использую источник. Я просто помещаю их в отдельную папку. У меня не было проблем с конфликтующими расширениями, но если вы это сделаете, я думаю, что должно быть какое-то [свойство источника] (http://www.cmake.org/cmake/help/v3.3/manual/cmake-properties. 7.html # properties-on-source-files), вы можете установить (SYMBOLIC или LANGUAGE), чтобы предотвратить интерпретацию файлов VS. – Phil

+0

Если это не ошибка, в вызове source_group «/» слэш ведет себя иначе, чем «\\», по крайней мере, с помощью Visual Studio. Использование «/» создает один фильтр верхнего уровня, называемый «верхний/средний/нижний», тогда как «\\» дает «верхний», содержащий «средний», содержащий «нижний» иерархически. – qdin

Смежные вопросы