add_executable

使用指定的原始碼檔案將執行檔加入專案。

一般執行檔

add_executable(<名稱> <選項>... <原始碼>...)

加入一個名為 <名稱> 的執行檔目標,該目標將從命令調用中列出的原始碼檔案建置。

選項如下:

WIN32

自動設定 WIN32_EXECUTABLE 目標屬性。請參閱該目標屬性的文件以取得詳細資訊。

MACOSX_BUNDLE

自動設定 MACOSX_BUNDLE 目標屬性。請參閱該目標屬性的文件以取得詳細資訊。

EXCLUDE_FROM_ALL

自動設定 EXCLUDE_FROM_ALL 目標屬性。請參閱該目標屬性的文件以取得詳細資訊。

<名稱> 對應到邏輯目標名稱,並且在專案中必須是全域唯一的。建置的執行檔實際檔案名稱是基於原生平台的慣例建構的(例如 <名稱>.exe 或僅 <名稱>)。

在 3.1 版本中新增:add_executable 的原始碼參數可以使用具有 $<...> 語法的「產生器表達式」。請參閱 cmake-generator-expressions(7) 文件以取得可用的表達式。

在 3.11 版本中新增:如果原始碼檔案稍後使用 target_sources() 加入,則可以省略它們。

依預設,執行檔將在命令被調用的原始碼樹目錄對應的建置樹目錄中建立。請參閱 RUNTIME_OUTPUT_DIRECTORY 目標屬性的文件以變更此位置。請參閱 OUTPUT_NAME 目標屬性的文件以變更最終檔案名稱的 <名稱> 部分。

請參閱 cmake-buildsystem(7) 文件以取得更多關於定義建置系統屬性的資訊。

另請參閱 HEADER_FILE_ONLY,了解如果某些原始碼是經過預先處理的,且您希望原始碼在 IDE 中可存取時該如何處理。

已匯入的執行檔

add_executable(<名稱> IMPORTED [GLOBAL])

加入一個 IMPORTED 執行檔目標 以參考專案外部的執行檔。目標名稱可以像在專案內建置的任何目標一樣被參考,但依預設,它只在建立它的目錄及其下方可見。

選項如下:

GLOBAL

使目標名稱在全域可見。

不會產生建置已匯入目標的規則,且 IMPORTED 目標屬性為 True。已匯入的執行檔對於從諸如 add_custom_command() 等命令方便地參考非常有用。

關於已匯入執行檔的詳細資訊是透過設定以 IMPORTED_ 開頭的屬性來指定的。最重要的此類屬性是 IMPORTED_LOCATION(及其每個組態的版本 IMPORTED_LOCATION_<CONFIG>),它指定磁碟上主執行檔的位置。請參閱 IMPORTED_* 屬性的文件以取得更多資訊。

別名執行檔

add_executable(<名稱> ALIAS <目標>)

建立一個 別名目標,這樣 <名稱> 可以用來在後續命令中參考 <目標><名稱> 不會以 make 目標的形式出現在產生的建置系統中。<目標> 不可以是 ALIAS

在 3.11 版本中新增:ALIAS 可以針對 GLOBAL已匯入目標

在 3.18 版本中新增:ALIAS 可以針對非 GLOBAL 的已匯入目標。此類別名會限定在建立它的目錄及其子目錄中。ALIAS_GLOBAL 目標屬性可以用來檢查別名是否為全域。

ALIAS 目標可以用作從中讀取屬性的目標、自訂命令和自訂目標的執行檔。它們也可以使用一般的 if(TARGET) 子命令來測試是否存在。<名稱> 不可用於修改 <目標> 的屬性,也就是說,它不能用作 set_property()set_target_properties()target_link_libraries() 等的運算元。ALIAS 目標無法安裝或匯出。

參見