まず、私の抜粋を見てみましょう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
したがって、最初の質問は、なぜ2つの-DQT_DLL
定義があるのかということです。
たとえば、追加しても、remove_definitions(-DQT_DEBUG)
何も変わりません。言い換えれば、remove_definitions
コマンドにバグがあるか、これらの定義が単に石に刻まれているだけです。
それで、「OK、remove_definitions
コマンドが本当にバグがあるのかもしれない。別の方法でやろう」と思いました。そして、私はしましたlist(REMOVE_ITEM QT_DEFINITIONS -DQT_DEBUG)
。しかし、それも機能しませんでした。
したがって、2番目の質問は次のとおりです。これらの定義は本当に組み込みで永続的であり、どのような状況でも変更できませんか?
注:これらの組み込み定義の編集には問題がありますが、たとえば次のようにカスタム定義を追加することは可能です。
add_definitions(-DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT)