我想用一個全局組標誌編譯一個項目,這意味着在我的頂層的CMakeLists.txt文件我已經指定:覆蓋編譯標誌爲單個文件
ADD_DEFINITIONS (-Wall -Weffc++ -pedantic -std=c++0x)
然而,對於一個(我們說「foo.cpp」)在一個子目錄中,我想切換 編譯標誌爲不適用-WeffC++(包含的商業庫,我無法更改)。爲了簡化,只-Wall使用的情況下,我想:
SET_SOURCE_FILES_PROPERTIES(foo.cpp PROPERTIES COMPILE_FLAGS -Wall)
ADD_EXECUTABLE(foo foo.cpp)
,沒有工作。 我也試過
SET_PROPERTY(SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall)
ADD_EXECUTABLE(foo foo.cpp)
和
ADD_EXECUTABLE(foo foo.cpp)
SET_TARGET_PROPERTIES(foo PROPERTIES COMPILE_FLAGS -Wall)
,其中既不工作。
最後,我試圖消除這種確定指標:
REMOVE_DEFINITIONS(-Weffc++)
ADD_EXECUTABLE(foo foo.cpp)
ADD_DEFINITIONS(-Weffc++)
,也沒有工作(意思是,我得到一個關於商業庫很多風格的警告)。 (**注:被抑制的警告,如果我不重新包括-WeffC++指令可執行建成後)
我也試着暫時刪除編譯標誌: http://www.cmake.org/pipermail/cmake/2007-June/014614.html ,但沒有幫幫我。
有沒有一個優雅的解決方案呢?
等待,如果你的最後一次嘗試的作品,它的建成,但只後,可能這不是一個緩存的問題?進行更改後嘗試刪除CMakeCache。 – Cameron
相關,請參閱[如何更改編譯器標誌在CMake的只是一個可執行文件?(https://stackoverflow.com/q/24238937/608639)安德烈的回答表明這似乎是更換了新的選擇現有選項的方式。 – jww