使用cmake中子目录中的source_group

时间:2019-03-02 11:45:57

标签: cmake

在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保持在我看来是最合逻辑的事情)?

0 个答案:

没有答案