cmake source_group可以用于add_library中吗
时间: 2023-12-06 15:03:01 浏览: 243
是的,`source_group`可以用于`add_library`中。在`add_library`中使用`source_group`的语法和在`add_executable`中使用是相同的。下面是一个简单的示例:
```cmake
add_library(MyLibrary STATIC
src/foo.cpp
src/bar.cpp
inc/foo.h
inc/bar.h
)
# 将头文件和源文件分别归类到不同的组中
source_group("Header Files" FILES inc/foo.h inc/bar.h)
source_group("Source Files" FILES src/foo.cpp src/bar.cpp)
```
在这个示例中,我们将头文件和源文件分别归类到不同的组中。这样,在生成的项目中,这些文件将会更好地组织起来,方便开发人员管理和查看。
需要注意的是,`source_group`的作用是对生成的项目做出组织和分组,不会对实际的文件系统进行操作,因此不会影响实际的文件结构。
相关问题
cmake使用了source_group但是VS打开工程时结构没有变化
在使用`source_group`分组后,如果在Visual Studio中打开项目时没有看到分组的效果,可以尝试以下方法:
1. 点击Visual Studio中的“刷新”按钮,这样Visual Studio会重新加载项目文件,可能会显示分组效果。
2. 确保你在`add_library`或`add_executable`中使用了正确的`TARGET`名称,例如:
```cmake
add_library(MyLibrary STATIC
src/foo.cpp
src/bar.cpp
inc/foo.h
inc/bar.h
)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES
src/foo.cpp
src/bar.cpp
inc/foo.h
inc/bar.h
)
```
在这个示例中,我们在`source_group`中使用了`TREE`参数,这样可以递归地查找所有文件并进行分组。如果你不确定使用了正确的`TARGET`名称或参数,可以检查生成的Visual Studio项目文件,查看分组是否正确。
3. 确保你在`project`命令中指定了正确的`VERSION`和`LANGUAGES`,例如:
```cmake
project(MyProject VERSION 1.0 LANGUAGES CXX)
```
在这个示例中,我们指定了C++语言,这样CMake会生成Visual Studio项目文件时使用正确的语言版本,并且可能会显示正确的分组效果。
如果以上方法都不起作用,你可以尝试重新生成Visual Studio项目文件,方法是删除项目目录下的`CMakeCache.txt`和`CMakeFiles`目录,然后重新运行CMake生成项目文件。
阅读全文