Сначала давайте посмотрим на отрывок из моего 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
действительно ошибочна, давайте сделаем это по-другому». И я сделал список (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)