在cmake中,您可以使用source_group
命令对IDE中的源文件进行分组(在我的情况下,它会在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文件中创建的目标。从its documentation开始,这种行为对我来说并不明显。
此文件记录在任何地方吗?并且有什么方法可以从子目录中使用source_group
(对我来说,将所有与shader / CMakeLists.txt相关的shader保持在我看来是最合逻辑的事情)?