我有基于 CLI 的应用程序,我决定向其中添加可选的 QT4 GUI。我的 CMakeLists.txt 看起来像这样:
...
add_library(applib ...
add_executable(app-cli ...
target_link_libraries(app-cli applib)
if(QT4_FOUND)
...
include(${QT_USE_FILE})
add_executable(app-qt ...
target_link_libraries(app-qt ${QT_LIBRARIES} applib)
endif()
它有效,但我注意到,每当“if(QT4_FOUND)”评估为真时,它会将“-DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG”添加到所有源文件的编译器调用中,包括非 qt 感知代码。虽然是良性的,但我认为没有必要。据我了解,问题归咎于它的 include(${QT_USE_FILE}) ,其中包括我机器上的 /usr/share/cmake/Modules/UseQt4.cmake ,其中第一个非注释行是:
add_definitions(${QT_DEFINITIONS})
虽然我可能想要类似的东西
set_target_properties (app-qt PROPERTIES COMPILE_DEFINITIONS "${QT_DEFINITIONS}")
对此有什么可做的吗?