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