qt - 使用 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 路径是否存在不当行为?
解决方案
解决这种情况的传统方法是什么?
只需将与您想要的架构相对应的 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()
推荐阅读
- sql - 用于将 SQL Server 数据库从一台服务器还原到另一台服务器的 PowerShell 脚本具有不同的驱动器
- python - 如何更改 Wagtail 通过其 API 服务媒体的方式?
- mysql - MySQL 到 MongoDB 将整数 ID 转换为 ObjectID 并重建引用
- c# - 如何从 C# 代码中的存储过程中获取 @@identity 或 SELECT SCOPE_IDENTITY() 的值?
- angularjs - Angular“未捕获的语法错误:意外的令牌:”
- node.js - Express App 在本地而非远程服务器上运行 - 'MODULE_NOT_FOUND',
- ios - UITableView 删除单元格重用问题
- javascript - 具有多个 $match 或 $pipeline 条件的 Mongo $lookup
- postgresql - 在特定目录上的 Windows 上无人值守安装 PostgreSQL 失败
- python - 从以 python 方式出现的键列表中获取字典中的第一个值