ENABLE_EXPORTS¶
指定執行檔或共享函式庫是否匯出符號。
通常,執行檔不會匯出任何符號,因為它是最終程式。執行檔可以匯出符號供可載入模組使用。當此屬性設定為 true 時,CMake 將允許其他目標使用 target_link_libraries()
命令「連結」到該執行檔。在所有平台上,對於連結到執行檔的目標,都會建立目標級別的依賴關係。可載入模組的連結行上對執行檔的處理方式會因平台而異。
在基於 Windows 的系統(包括 Cygwin)上,會與執行檔一起建立一個「匯入函式庫」,以列出匯出的符號。可載入模組連結到匯入函式庫以取得符號。
在 macOS 上,可載入模組使用
-bundle_loader
標誌連結到執行檔本身。在 AIX 上,會與執行檔一起建立一個連結器「匯入檔案」,以列出連結其他目標時要匯入的符號。可載入模組連結到匯入檔案以取得符號。
在其他平台上,可載入模組會直接連結,而無需參考執行檔,因為動態載入器會在載入模組時自動繫結符號。
此屬性由 CMAKE_EXECUTABLE_ENABLE_EXPORTS
變數的值初始化,如果該變數在建立執行檔目標時已設定。如果未設定 CMAKE_EXECUTABLE_ENABLE_EXPORTS
,則會改用 CMAKE_ENABLE_EXPORTS
變數初始化該屬性,以實現向後相容性。有關共享函式庫目標的替代初始化行為,請參閱下文。
新增於 3.27 版: 若要在 macOS 上連結共享函式庫,或在任何 Apple 平台上連結共享框架,可以使用連結器匯入檔案,而不是實際的共享函式庫。這些連結器匯入檔案也稱為文字型存根,它們具有 .tbd
副檔名。
這些連結器匯入檔案的產生以及它們的消耗由這個屬性控制。當在共享函式庫目標上將此屬性設定為 true 時,CMake 將為該函式庫產生一個 .tbd
檔案。然後,連結到共享函式庫目標的其他目標在連結時將使用此 .tbd
檔案,而不是連結到共享函式庫二進位檔案。
注意
為了向後相容性,如果 XCODE_ATTRIBUTE_GENERATE_TEXT_BASED_STUBS
目標屬性或 CMAKE_XCODE_ATTRIBUTE_GENERATE_TEXT_BASED_STUBS
變數設定為 false,則會忽略此屬性。
對於共享函式庫目標,此屬性由 CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS
變數的值初始化,如果該變數在建立目標時已設定。