使用什么而不是“qt5_use_modules”

What to use instead of `qt5_use_modules`?

本文关键字:qt5 use modules 什么      更新时间:2023-10-16

Qt 5 CMake 手册指出qt5_use_modules宏已被弃用:

此宏已过时。请改用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倒退的重大一步,这很简单,而且"只是有效"。我错过了什么吗?

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

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

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