首先,讓我們看一下摘自我CMakeLists.txt
:CMake + Qt =刻在石頭上Qt的定義(aka。-DQT _...)?
find_package(Qt4 4.8.0 COMPONENTS QtCore QtGui QtOpenGL REQUIRED)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
因此,在默認情況下我們得到在調試模式下定義如下:
-DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_DLL -DQT_DEBUG
因此,第一個問題是:爲什麼有兩個-DQT_DLL
的定義?
現在,如果我追加,例如,remove_definitions(-DQT_DEBUG)
- 沒有任何變化。換句話說,任何一個remove_definitions
命令都會被竊聽,或者這些定義只是刻在石頭上。
然後我想「好的,也許remove_definitions
命令真的被竊聽了,讓我們以另一種方式做。」我做了list(REMOVE_ITEM QT_DEFINITIONS -DQT_DEBUG)
。但是,它也沒有工作。
因此,第二個問題是:這些定義是否真的內置和持久,在任何情況下都不能改變?
注:儘管與編輯這些內置的定義問題,仍然可以添加自定義的定義,例如:
add_definitions(-DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT)