【问题标题】:Qt5 private headers detection with Cmake doesn't work correctly on Fedora?使用 Cmake 进行 Qt5 私有标头检测在 Fedora 上无法正常工作?
【发布时间】:2020-06-12 18:38:08
【问题描述】:

Qt5 CMake 文件为请求的每个 Qt 组件定义目标,例如 Qt5::Gui、Qt5::Multimedia 等。安装模块的私有头文件时,会声明一个随附的 Qt5::FooPrivate,如果您需要在私有头文件上添加依赖项/包含路径,则可以使用它。

不幸的是,在 Fedora 上,即使包含私有头文件(例如,qt5-qtbase-private-devel)的 RPM 已安装,Qt5::FooPrivate 目标仍然可用。这导致了我维护的项目的构建失败,如果私有标头可用,我想选择性地构建一些附加功能,而无需用户始终安装它们。

【问题讨论】:

    标签: cmake qt5 fedora


    【解决方案1】:

    问题是Fedora 将私有头文件所在的子目录打包在它的主要开发包中(例如,qt5-qtbase-devel RPM)。 Qt5 CMake Config.cmake 文件检查这些目录是否存在,并假设这意味着私有头文件可用。

    在调整 Fedora 打包或 Qt5 Config.cmake 文件之前,解决方法是手动检查其中一个私有文件是否存在。例如通过 CMake 的 CHECK_INCLUDE_FILE_CXX 辅助函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多