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
目標可能無法安裝或匯出。