温馨提示×

txt中的add_subdirectory如何使用

小樊
83
2024-09-07 05:33:15
栏目: 编程语言

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 时,它将自动构建这两个库,并将它们链接到可执行文件中。

0