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