WINDOWS_EXPORT_ALL_SYMBOLS¶
在版本 3.4 中新增。
此屬性僅適用於 Windows 上與 MS 相容的工具。
啟用此布林值屬性,以自動建立一個模組定義 (.def
) 檔案,其中包含輸入 .obj
檔案中找到的所有全域符號,用於 Windows 上的 SHARED
程式庫(或具有 ENABLE_EXPORTS
的可執行檔)。模組定義檔案將會傳遞給連結器,導致所有符號都從 .dll
匯出。對於全域資料符號,當針對 .dll
中的程式碼進行編譯時,仍然必須使用 __declspec(dllimport)
。所有其他函式符號將會由呼叫者自動匯出和匯入。這簡化了將專案移植到 Windows 的過程,減少了明確 dllexport
標記的需求,即使在 C++
類別中也是如此。
當啟用此屬性時,也可以將零個或多個 .def
檔案指定為目標的原始程式碼檔案。這些檔案所命名的匯出將會與從物件檔案偵測到的匯出合併,以產生一個要傳遞給連結器的單一模組定義檔案。這可以用於從 .dll
匯出不在其任何物件檔案中,而是由連結器從相依性(例如 msvcrt.lib
)添加的符號。
如果建立目標時設定了 CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
變數,則此屬性會由該變數的值初始化。