В cmake вы можете группировать исходные файлы в вашей IDE с помощью команды source_group
(в моем случае это создает фильтры в проекте Visual Studio).
У меня есть структура каталогов, подобная этой
Main (dir)
+-- CMakeLists.txt
+-- main.cpp
+-- shaders(dir)
+-- CMakeLists.txt
+-- shader1.glsl
+-- shader2.glsl
Main / CMakeLists.txt:
cmake_minimum_required (VERSION 3.13)
add_executable(myExec main.cpp)
add_subdirectory(shaders)
shaders / CMakeLists.txt:
target_sources(myExec PRIVATE shader1.glsl shader2.glsl)
Если я добавлю source_group("Config Files" REGULAR_EXPRESSION ".*\.glsl")
в Main / CMakeLists.txt, он создастфильтр, который содержит shader1.glsl и shader2.glsl, как и ожидалось.Однако, если я использую его в shaders / CMakeList.txt, он не добавляет фильтр, а shader1.glsl и shader2.glsl появляются непосредственно в проекте myExec.
Мне кажется, что source_group
относится толькок целям, которые созданы в том же файле CMakeList.txt.Это поведение не очевидно для меня из его документации .
Это где-нибудь задокументировано?И есть ли способ использовать source_group
из подкаталога (для меня было бы наиболее логичным сохранить все шейдеры в shaders / CMakeLists.txt)?