首页 > 解决方案 > 使用 CMAKE_PREFIX_PATH 进行多配置构建

问题描述

我正在使用 find_package 查找 Qt 并将“C:\Qt\5.15.0\mingw81_64\lib\cmake”添加到我的CMAKE_PREFIX_PATH环境变量中,到目前为止,它在仅使用 64 位时运行良好。但是,我希望能够在 32 位和 64 位版本之间切换。因此,我还为 32 位添加了等效的上述路径,但是这导致了链接错误(可能 CMake 不确定选择哪一个并为其中一种配置选择了错误的)。

解决这种情况的传统方法是什么?目前我正在使用后缀路径并根据编译器体系结构进行搜索,但理想情况下,我希望将这些东西从 CMake 项目本身中排除,只要求项目用户自己添加任何 Qt 位置,同时仍然能够拥有“多个”Qt 位置。

这可以解决吗?CMAKE_PREFIX_PATH或者在你的变量中有两个 Qt 路径是否存在不当行为?

标签: qtcmake

解决方案


解决这种情况的传统方法是什么?

只需将与您想要的架构相对应的 Qt 路径添加到您的 CMAKE_PREFIX_PATH 中。

[...] 但理想情况下,我希望将这些东西从 CMake 项目本身中剔除,只要求项目用户自己添加任何 Qt 位置,同时仍然能够拥有“多个”Qt 位置。

您可以要求用户将 Qt 路径作为参数传递(通过命令行调用 CMake 时)

cmake -DQT_PATH={PATH TO QT} ...

或读取环境变量(用户必须设置)

if(DEFINED ENV{QT_ENVIRON})
    set(QT_PATH $ENV{QT_ENVIRON})
else()
    set(QT_PATH ...)
endif()

推荐阅读