用什么而不是`qt5_use_modules`?

时间:2015-07-01 21:38:56

标签: c++ qt cmake qt5

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向后迈出的一大步,这很简单,只是有效。"我错过了什么吗?

1 个答案:

答案 0 :(得分:13)

有关使用IMPORTED目标的消息实际上是指Qt5的CMake模块为您提供的生成目标,而不是您应该在target_link_libraries宏上设置IMPORTED属性。例如,像:

target_link_libraries(${myProjectName} Qt5::Core Qt5::Widgets)

将负责添加所有必要的包含路径,链接路径和库,以便使用Qt5CoreQt5Widgets模块。