cmakelist 获取文件列表
时间: 2023-10-19 21:08:53 浏览: 128
在CMakeLists.txt中获取文件列表可以使用多种方式。其中一种常用的方式是使用命令"file(GLOB ...)",它可以匹配指定模式的文件并将其添加到一个变量中。例如,你可以使用以下命令获取当前目录下的所有源文件和头文件:
```cmake
file(GLOB SOURCES *.cpp *.c)
file(GLOB HEADERS *.h)
# 然后可以使用这些变量在你的项目中进行编译和链接操作
add_executable(your_executable ${SOURCES} ${HEADERS})
```
另外一种方式是手动指定文件列表,这在某些情况下更加灵活。你可以使用命令"set(...)"来定义一个包含所有文件路径的列表,然后将这个列表传递给相关的编译和链接命令。例如:
```cmake
set(SOURCES
file1.cpp
file2.cpp
...
)
set(HEADERS
file1.h
file2.h
...
)
# 然后同样可以使用这些变量在你的项目中进行编译和链接操作
add_executable(your_executable ${SOURCES} ${HEADERS})
```
上述是两种常用的方式来获取文件列表,你可以根据你的具体需求选择其中一种或者结合使用。
相关问题
cmakelist 遍历文件
在CMakeLists.txt中,可以使用不同的方式来遍历文件。其中一种方式是使用file命令结合GLOB选项,可以通过指定文件的匹配模式来获取满足条件的文件列表。例如,通过file命令和GLOB选项可以获取包含了各个子目录的cpp、c和h文件的列表,具体命令如下:
file(GLOB MediaKit_src_list ${MediaKit_Root}/*/*.cpp ${MediaKit_Root}/*/*.h ${MediaKit_Root}/*/*.c)
另一种方式是使用aux_source_directory命令,可以指定一个目录,并将该目录下的所有cpp和c文件添加到指定的变量中。例如,通过aux_source_directory命令可以添加当前目录中的cpp和c文件到TEST_SRC_LIST变量,具体命令如下:
aux_source_directory(. TEST_SRC_LIST)
还有一种方式是使用file命令的GLOB_RECURSE选项,可以递归地获取指定目录及其子目录中的所有cpp文件,并将其添加到指定的变量中。例如,可以使用以下命令获取当前目录及其子目录中的所有cpp文件,并将其保存到SRC_LIST变量中:
file(GLOB_RECURSE SRC_LIST *.cpp)
需要注意的是,这些命令只是用于获取文件列表,具体如何使用这些列表需要根据具体情况进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [CMake入门教程](https://blog.csdn.net/lvwx369/article/details/118488514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [cmake 遍历目录并加入工程](https://blog.csdn.net/markqian86/article/details/118303470)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
cmakelist 获取工程名
在CMakeLists.txt文件中,获取工程名通常不是直接通过内置函数完成的,因为CMakeLists.txt主要用于配置项目而不是运行时获取信息。但是,你可以自定义一个变量来存储工程名称,例如在项目的根目录下设置它。
下面是一个简单的例子:
```cmake
# 设置工程名称
set(PROJECT_NAME "MyAwesomeProject")
# 或者如果你希望从命令行参数获取名字
if(NOT DEFINED PROJECT_NAME)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-source builds are not allowed.")
endif()
execute_process(COMMAND "${CMAKE_COMMAND}" -DSOURCE_DIR=${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE SOURCE_DIR_OUTPUT ERROR_QUIET)
string(REGEX REPLACE "^SOURCE_DIR: ([^ ]+)" "\\1" PROJECT_NAME ${SOURCE_DIR_OUTPUT})
endif()
message(STATUS "Current project name is: ${PROJECT_NAME}")
```
在这个例子中,`PROJECT_NAME`变量会被设置为工程的实际名称。如果需要在其他地方使用这个名称,你可以在CMakeLists.txt文件的其他部分引用它。
阅读全文
相关推荐













