In primo luogo, diamo un'occhiata al estratto dal mio CMakeLists.txt
:CMake + Qt = definizioni Qt intagliate nella pietra (alias -DQT _...)?
find_package(Qt4 4.8.0 COMPONENTS QtCore QtGui QtOpenGL REQUIRED)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
Pertanto, per impostazione predefinita otteniamo le seguenti definizioni in modalità debug:
-DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_DLL -DQT_DEBUG
Quindi la prima domanda è: perché ci sono due -DQT_DLL
definizioni?
Ora, se appendo, ad esempio, remove_definitions(-DQT_DEBUG)
- non cambia nulla. In altre parole, il comando remove_definitions
è bloccato o queste definizioni sono semplicemente scolpite nella pietra.
poi ho pensato come "OK, forse remove_definitions
comando è davvero spiati, facciamolo in un altro modo." E ho fatto list(REMOVE_ITEM QT_DEFINITIONS -DQT_DEBUG)
. Tuttavia, non ha funzionato neanche.
Pertanto, la seconda questione è: sono queste definizioni realmente integrato e persistente e non può essere modificato in qualsiasi circostanza?
NOTA: Nonostante i problemi con la modifica di queste definizioni built-in, è ancora possibile aggiungere definizioni personalizzate, per esempio:
add_definitions(-DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT)