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
包含兩個子目錄 lib1
和 lib2
,每個子目錄都有自己的 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()
函數,將 lib1
和 lib2
子目錄添加到構建過程中。然后,我們創建一個名為 my_project
的可執行文件,并將其鏈接到 lib1
和 lib2
庫。
lib1
和 lib2
的 CMakeLists.txt
文件分別如下:
lib1/CMakeLists.txt
:
add_library(lib1 STATIC lib1.cpp)
lib2/CMakeLists.txt
:
add_library(lib2 STATIC lib2.cpp)
在這些子目錄的 CMakeLists.txt
文件中,我們分別為 lib1
和 lib2
創建靜態庫。這樣,當我們構建 my_project
時,它將自動構建這兩個庫,并將它們鏈接到可執行文件中。