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 變數,則此屬性會由該變數的值初始化。