Qt 5 CMake manual表示不推荐使用qt5_use_modules
宏:
这个宏已经过时了。改为使用带有IMPORTED目标的target_link_libraries。
...但是qt5_use_modules
不仅仅指定了链接库:它指定了包含目录,必要的编译标志等等(参见上面链接文档中的完整描述)。
假设变量QTMODULES
包含一些应该用于项目的Qt模块列表,那么"推荐的"替换以下内容的方式"已弃用" CMake线?
qt5_use_modules(${myProjectName} ${QTMODULES})
以下不起作用,主要是因为它不添加任何Qt包含路径:
target_link_libraries(${myProjectName} IMPORTED ${QTMODULES})
是否需要手动迭代QTMODULES
变量,以便可以为每个单独的模块名称调用include_directories
?这似乎是从qt5_use_modules
向后迈出的一大步,这很简单,只是有效。"我错过了什么吗?
答案 0 :(得分:13)
有关使用IMPORTED目标的消息实际上是指Qt5的CMake模块为您提供的生成目标,而不是您应该在target_link_libraries
宏上设置IMPORTED属性。例如,像:
target_link_libraries(${myProjectName} Qt5::Core Qt5::Widgets)
将负责添加所有必要的包含路径,链接路径和库,以便使用Qt5Core
和Qt5Widgets
模块。