CMake中find_package()查找指定版本的库,以Qt库多版本共存为例

当系统中安装了多个Qt版本,CMake的find_package函数可能会遇到版本选择的问题。文章提供了三种策略来指定使用特定版本的Qt库:1)设置CMAKE_PREFIX_PATH强制使用5.12.3版本;2)混合使用不同版本的Qt模块;3)先添加库路径到CMAKE_PREFIX_PATH,然后使用EXACT关键字精确查找指定版本的库组件。这种方法适用于需要多个版本库的情况。
摘要由CSDN通过智能技术生成

Qt安装了多个版本时,CMake中写的find_package()到底找到的是哪个库?

例如,我电脑安装了两个版本的Qt,一个是5.12.3另一个是5.14.2

 此时我的CMake如何指定使用哪个版本呢?方法如下:

1、指定Qt5的所有模块仅使用5.12.3的版本(5.12.3 EXACT表示强制匹配5.12.3版本,匹配不到则直接报错退出):

set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.12.3/5.12.3/msvc2017_64")
find_package(Qt5 5.12.3 EXACT COMPONENTS Widgets Network Quick REQUIRED)

2、多版本混用,指定Qt5一些模块使用5.12.3,一些使用5.14.2(此方法可能有误,自己再试试吧):

# 添加qt5.12.3的安装路径,用于给find_package指定路径
set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.12.3/5.12.3/msvc2017_64")

# 追加qt5.14.2的安装路径,用于给find_package指定路径
list(APPEND CMAKE_PREFIX_PATH "C:/Qt/Qt5.14.2/5.14.2/msvc2017_64")

# Qt5::Widgets 和 Qt5::Network 模块使用5.12.3版本
find_package(Qt5 5.12.3 EXACT COMPONENTS Widgets Network REQUIRED)

# Qt5::Quick模块使用5.14.2版本
find_package(Qt5 5.14.2 EXACT COMPONENTS Quick REQUIRED)

3、如果很多库你都安装了多个版本,一定要先把库的安装路径追加到 “CMAKE_PREFIX_PATH” 变量中,再find_package(),注意使用 “版本号 EXACT” 关键字修饰,帮你判断是否找到指定版本;

# 追加指定版本库的安装路径,用于给find_package指定路径
list(APPEND CMAKE_PREFIX_PATH "指定版本库的安装路径")

find_package(<库名> <版本号> EXACT COMPONENTS <组件名1> ... <组件名n> REQUIRED)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值