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)
将负责添加所有必要的包含路径、链接路径和库,以使用 Qt5Core
和 Qt5Widgets
模块。