多个文件夹的cmakelists怎么写
时间: 2023-11-30 15:12:51 浏览: 99
在一个大型项目中,通常会有多个目录和子目录,每个目录都包含一些源文件和头文件。为了构建整个项目,我们需要编写一个多目录的 CMakeLists.txt 文件。
以下是一个示例 CMakeLists.txt 文件,用于构建一个包含多个目录的 C++ 项目:
```cmake
cmake_minimum_required(VERSION 3.10)
# 设置项目名称和版本号
project(MyProject VERSION 1.0)
# 添加可执行文件,并指定源文件
add_executable(MyProject main.cpp)
# 添加子目录
add_subdirectory(foo)
add_subdirectory(bar)
# 添加头文件搜索路径
include_directories(${CMAKE_SOURCE_DIR}/include)
# 添加库搜索路径
link_directories(${CMAKE_SOURCE_DIR}/lib)
# 添加库文件,可以是静态库或动态库
target_link_libraries(MyProject mylib)
# 设置编译选项
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Werror")
```
上述示例中,我们使用 add_subdirectory() 函数添加了两个子目录 foo 和 bar,这些子目录中也包含了 CMakeLists.txt 文件。使用 include_directories() 和 link_directories() 函数,我们指定了头文件和库文件的搜索路径。使用 target_link_libraries() 函数,我们将库文件链接到可执行文件中。
请注意,每个子目录中都应该有一个 CMakeLists.txt 文件,用于编译该子目录中的源文件和头文件。在子目录的 CMakeLists.txt 文件中,您可以使用 add_library() 函数添加一个库文件,或使用 add_executable() 函数添加一个可执行文件。然后可以使用 target_link_libraries() 函数将库文件链接到可执行文件中。
如果您的项目中有多个目录和子目录,那么您需要编写一个更加复杂的 CMakeLists.txt 文件来构建整个项目。
阅读全文