Во-первых, давайте посмотрим на отрывок из моей CMakeLists.txt
:CMake + Qt = вырезаны в каменных определениях Qt (ака. -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)