CMake + Qt = высеченные в камне определения Qt (также известные как -DQT_…)?

Сначала давайте посмотрим на отрывок из моего 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)
6
задан Alexander Shukaev 31 January 2012 в 17:12
поделиться