CMake添加指定目录下所有文件
时间: 2023-09-12 15:08:20 浏览: 276
您可以使用CMake的`file()`命令来获取指定目录下的所有文件,然后使用`add_executable()`或`add_library()`命令将它们添加到您的项目中。以下是一个示例:
```cmake
# 获取指定目录下的所有源文件
file(GLOB SOURCES "path/to/directory/*.cpp" "path/to/directory/*.h")
# 将源文件添加到可执行文件中
add_executable(my_executable ${SOURCES})
```
您可以将`path/to/directory`替换为您想要扫描的目录路径,也可以使用通配符`*`来匹配所有文件。请注意,`file()`命令在CMakeLists.txt文件被解析时执行,因此如果您添加或删除了文件,您需要重新运行`cmake`来重新生成项目。
相关问题
cmake添加hlsl文件目录
要在CMake项目中添加HLSL文件目录,可以使用CMake命令`include_directories`和`add_library`。
假设你的HLSL文件位于`/path/to/hlsl`目录下,你可以使用如下代码将它们添加到CMake项目中:
```
# 添加HLSL文件目录
include_directories(/path/to/hlsl)
# 添加库
add_library(mylib mylib.cpp)
# 将HLSL文件链接到库中
target_sources(mylib PRIVATE /path/to/hlsl/myshader.hlsl)
```
这里,`include_directories`命令用于指定HLSL文件目录的路径,`add_library`命令用于创建一个名为`mylib`的库,并将`mylib.cpp`文件添加到库中。最后,`target_sources`命令用于将`myshader.hlsl`文件链接到`mylib`库中。
这样,当你构建`mylib`库时,CMake会自动检测`myshader.hlsl`文件的更新,然后将它们编译成相应的二进制文件。
cmake添加多个目录下源文件
在使用CMake添加多个目录下的源文件时,可以使用`add_subdirectory()`函数来添加子目录。
首先,在主目录的`CMakeLists.txt`中使用`add_subdirectory()`函数来添加各个子目录,如下所示:
```
# 添加子目录
add_subdirectory(directory1)
add_subdirectory(directory2)
```
然后,在各个子目录的`CMakeLists.txt`中,可以使用`aux_source_directory()`函数或者手动指定源文件列表来获取所有的源文件,并将它们存储到一个变量中。例如,使用`aux_source_directory()`函数可以将一个目录中的所有源文件添加到一个变量中,如下所示:
```
# 获取目录中的所有源文件
aux_source_directory(src SOURCES)
# 添加源文件到当前目录的可执行文件中
add_executable(executable ${SOURCES})
```
或者,也可以手动指定源文件列表来将每个源文件添加到一个变量中,如下所示:
```
# 手动指定源文件列表
set(SOURCES dir1/file1.cpp dir2/file2.cpp)
# 添加源文件到当前目录的可执行文件中
add_executable(executable ${SOURCES})
```
通过上述步骤,就可以在使用CMake构建项目时,自动添加多个目录下的源文件,并将它们编译成一个可执行文件。