txt中的add_subdirectory如何使用

avatar
作者
猴君
阅读量:0

add_subdirectory() 是 CMake 构建系统中的一个命令,用于将子目录添加到构建过程中

以下是 add_subdirectory() 函数的基本用法:

add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 
  • source_dir:子目录的路径,相对于当前 CMakeLists.txt 文件的位置。
  • binary_dir(可选):指定子目录的构建输出目录。如果省略此参数,则将使用默认的构建目录。
  • EXCLUDE_FROM_ALL(可选):如果指定此选项,则子目录中的目标将不会自动包含在主项目的默认构建过程中。你需要显式地指定依赖关系。

以下是一个简单的示例,说明如何使用 add_subdirectory()

假设你有以下目录结构:

my_project/     CMakeLists.txt     main.cpp     lib1/         CMakeLists.txt         lib1.cpp         lib1.h     lib2/         CMakeLists.txt         lib2.cpp         lib2.h 

在这个例子中,my_project 包含两个子目录 lib1lib2,每个子目录都有自己的 CMakeLists.txt 文件。

顶层 CMakeLists.txt 文件内容如下:

cmake_minimum_required(VERSION 3.0) project(my_project)  add_subdirectory(lib1) add_subdirectory(lib2)  add_executable(my_project main.cpp) target_link_libraries(my_project PRIVATE lib1 lib2) 

在这个例子中,我们首先调用 add_subdirectory() 函数,将 lib1lib2 子目录添加到构建过程中。然后,我们创建一个名为 my_project 的可执行文件,并将其链接到 lib1lib2 库。

lib1lib2CMakeLists.txt 文件分别如下:

lib1/CMakeLists.txt:

add_library(lib1 STATIC lib1.cpp) 

lib2/CMakeLists.txt:

add_library(lib2 STATIC lib2.cpp) 

在这些子目录的 CMakeLists.txt 文件中,我们分别为 lib1lib2 创建静态库。这样,当我们构建 my_project 时,它将自动构建这两个库,并将它们链接到可执行文件中。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!