在使用 CMake 构建项目时,如果你的项目源代码分布在不同的目录下,你可以使用 aux_source_directory()
函数来帮助你收集这些目录下的源文件,然后将它们添加到你的可执行文件或库中。下面是如何操作的详细步骤:
cmake 添加不同目录下源码
最新推荐文章于 2024-09-23 16:37:52 发布
在使用 CMake 构建项目时,如果你的项目源代码分布在不同的目录下,你可以使用 aux_source_directory()
函数来帮助你收集这些目录下的源文件,然后将它们添加到你的可执行文件或库中。下面是如何操作的详细步骤:
aux_source_directory()``aux_source_directory()
函数可以将指定目录下的所有源文件名称赋值给一个变量。这个函数的基本用法如下:cmakeaux_source_directory(<dir> <variable>)
- <dir>
是你想要收集源文件的目录。- <variable>
是存储这些源文件路径的变量。### 2. 示例假设你的项目结构如下:project/│├── CMakeLists.txt│├── src/│ ├── main.cpp│ └── CMakeLists.txt│└── lib/ ├── utility.cpp └── CMakeLists.txt
你想要在 src
目录下创建一个可执行文件,它使用了 src
和 lib
目录下的源文件。#### 在 project/CMakeLists.txt
中首先,在项目的根目录 CMakeLists.txt
文件中,你需要包含子目录:cmakecmake_minimum_required(VERSION 3.10)project(MyProject)# 包含子目录add_subdirectory(src)add_subdirectory(lib)
#### 在 project/src/CMakeLists.txt
中然后,在 src
目录的 CMakeLists.txt
文件中,你可以使用 aux_source_directory()
收集 src
目录下的源文件,并创建一个可执行文件:cmake# 收集当前目录下的源文件aux_source_directory(. SRC_LIST)# 添加可执行文件add_executable(my_executable ${SRC_LIST})
#### 在 project/lib/CMakeLists.txt
中在 lib
目录的 CMakeLists.txt
文件中,你同样可以使用 aux_source_directory()
收集 lib
目录下的源文件。但是,由于你想要将这些源文件链接到 src
目录下的可执行文件,你需要将这些源文件添加到一个库中,然后在 src
目录的 CMakeLists.txt
中链接这个库:cmake# 收集当前目录下的源文件aux_source_directory(. LIB_SRC_LIST)# 添加静态库add_library(my_library STATIC ${LIB_SRC_LIST})
#### 链接库最后,回到 project/src/CMakeLists.txt
,你需要链接 lib
目录下创建的库:cmake# 链接库target_link_libraries(my_executable my_library)
通过这种方式,你可以将不同目录下的源文件添加到你的项目中,并构建你的应用程序。