【album】編譯工程

Skye_Zhao發表於2024-03-18

記錄帖。

CMake

以下都是 CMake 函式,用於配置專案的構建系統,說明如下:

find_package(package_name):此函式用於查詢現有的包配置模組或預定義模組。它查詢指定庫的安裝位置,並設定相關變數。包配置模組是庫的安裝過程中建立的,用於幫助庫的使用者找到和連結庫。預定義模組是 CMake 分發中提供的,用於處理常見庫的查詢和匯入。

link_directories(directory):此函式用於將目錄新增到連結器的庫檔案搜尋路徑(Library Paths)。在連結過程中,連結器需要在這些路徑中找到庫檔案(如 .lib 或 .a),並將它們與目標可執行檔案或庫一起連結。link_directories() 函式允許您指定連結器搜尋庫檔案的目錄。

include_directories(directory):此函式用於將指定的目錄新增到編譯器標頭檔案搜尋路徑(Include Paths)。編譯器在編譯過程中需要找到被原始碼引用的標頭檔案。include_directories() 函式允許您指定編譯器搜尋標頭檔案的目錄。

set_target_properties(target_name PROPERTIES prop1 value1 prop2 value2 ...):此函式用於設定構建目標的屬性。您可以透過此函式修改目標的名稱、位置、輸出字尾等。target_name 引數指定要設定屬性的目標名稱。PROPERTIES 關鍵字表示您將提供屬性名稱和值。prop1 value1 prop2 value2 ... 是屬性名稱和值的成對列表。

target_link_libraries(target lib1 lib2 ...):此函式用於連結庫到特定的目標檔案。例如,如果您有一個可執行檔案(如 executable_target),需要連結到 lib1 和 lib2,則可以使用 target_link_libraries(executable_target lib1 lib2)。

pybind11_add_module(target_name source1 source2 ...):此函式由 Pybind11 提供,用於建立 Python 擴充套件模組。函式接收一個目標名稱,將使用給定的原始檔(source1、source2 等)為此目標建立一個共享庫。在輸出時,它還可以自動新增適當的字尾(例如,在 Windows 上為 .pyd)。

add_library(target_name [SHARED | STATIC] source1 source2 ...):此函式用於定義一個庫目標,它將由給定的原始檔構建。第一個引數 target_name 是庫目標名稱。SHARED 選項表示要構建動態庫(例如,.dll 檔案),STATIC 表示要構建靜態庫(例如,.lib 檔案)。source1、source2 等引數是庫的原始檔列表。

set(var_name val1 val2 ...):此函式用於設定 CMake 變數。var_name 是要設定的變數名稱,val1、val2 等是要分配給變數的值。變數可作為路徑、列表、編譯選項等資訊儲存在 CMake 指令碼中,用於後續引用。

相關文章