#cmake
#cmake
Вопрос:
В 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)?
Комментарии:
1. Тем временем документация была обновлена: «Область действия группы ограничена каталогом, в котором вызывается команда, и применяется к источникам в целевых объектах, созданных в этом каталоге». cmake.org/cmake/help/v3.23/command/source_group.html