2015-10-17 288 views
1

我不斷地得到這個問題,當我的配置CMake的項目:擺脫CMake的CMP0063警告

CMake的警告(DEV)的例子/的CMakeLists.txt:74(ADD_EXECUTABLE):
政策CMP0063未設置:榮譽所有目標 類型的可見性屬性。有關策略詳細信息,請運行「cmake --help-policy CMP0063」。使用 cmake_policy命令設置策略並取消此警告。的類型「可執行」

目標「Protonect」具有以下能見度
屬性CXX設置:

CXX_VISIBILITY_PRESET 
VISIBILITY_INLINES_HIDDEN 

出於兼容性CMake的不履行他們的這一目標。這個 警告是針對項目開發者的。使用-Wno-dev來抑制它。

我知道我想打電話給cmake_policy(SET CMP0063 NEW) - 我正在做,但當時我不知道我應該如何使用add_executable(Protonect)

回答

0

這些類型的policy warnings在CMake行爲發生更改時引入了新的CMake版本。所以這個警告只是說你必須選擇你想要的行爲。

當新政策出臺後,新的CMake版本將開始警告後向兼容的行爲。

這些警告通常會在您使用此類功能時檢測到。在你的情況 - 政策CMP0063 - 我懷疑你已經爲你的一個庫目標設置了ENABLE_EXPORTS

所以 - 你的問題哪一個你想要的 - 我還建議

cmake_policy(SET CMP0063 NEW) 

因爲OLD只能適用情況下,你依賴於CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN性能榮獲「來源可能被編譯爲靜態庫或對象庫的一部分,然後再鏈接到共享庫「。

有關詳細信息CXX_VISIBILITY_PRESETVISIBILITY_INLINES_HIDDEN也看到