add_executable

使用指定的原始檔將可執行檔添加到專案中。

一般可執行檔

add_executable(<name> <options>... <sources>...)

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

選項包括

WIN32

自動設定 WIN32_EXECUTABLE 目標屬性。 有關詳細資訊,請參閱該目標屬性的文件。

MACOSX_BUNDLE

自動設定 MACOSX_BUNDLE 目標屬性。 有關詳細資訊,請參閱該目標屬性的文件。

EXCLUDE_FROM_ALL

自動設定 EXCLUDE_FROM_ALL 目標屬性。 有關詳細資訊,請參閱該目標屬性的文件。

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

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

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

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

有關定義建置系統屬性的更多資訊,請參閱 cmake-buildsystem(7) 手冊。

另請參閱 HEADER_FILE_ONLY,以了解如果某些原始碼經過預處理,並且您希望從 IDE 內部存取原始原始碼,該怎麼做。

匯入的可執行檔

add_executable(<name> IMPORTED [GLOBAL])

添加一個 IMPORTED 可執行目標,以引用位於專案外部的可執行檔。 目標名稱可以像專案中建置的任何目標一樣被引用,但預設情況下,它僅在建立它的目錄及其下目錄中可見。

選項包括

GLOBAL

使目標名稱全域可見。

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

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

別名可執行檔

add_executable(<name> ALIAS <target>)

建立一個 別名目標,這樣在後續命令中可以使用 <name> 來引用 <target><name> 不會作為 make 目標出現在產生的建置系統中。 <target> 不可以是 ALIAS

在 3.11 版本中新增: ALIAS 可以指向 GLOBAL 匯入的目標

在 3.18 版本中新增: ALIAS 可以指向非 GLOBAL 匯入的目標。 此類別名被限定在建立它的目錄和子目錄中。 ALIAS_GLOBAL 目標屬性可用於檢查別名是否為全域的。

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

參見