gpt4 book ai didi

c++ - 如何告诉 CMake 在编译期间使用特定版本的 Qt?

转载 作者:行者123 更新时间:2023-11-30 01:48:50 25 4
gpt4 key购买 nike

我的 Ubuntu 上安装了两个版本的 Qt - 5.2(默认)和 5.4(在/opt/Qt/5.4/gcc_64 中):

CMakeLists.txt:

project(testproject)
find_package(Qt5Core HINTS /opt/Qt/5.4/gcc_64 REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main Qt5::Core)

主要.cpp:

#include <QDebug>
int main()
{
qDebug() << "runtime version: " << qVersion() << " compiled with: " << QT_VERSION_STR << endl;
return 0;
}

运行程序:

cmake . && make clean && make && LD_LIBRARY_PATH=/opt/Qt/5.4/gcc_64/lib ./main

输出:

runtime version:  5.4.0  compiled with:  5.2.1

如何告诉 CMake 内部使用 Qt 5.4 而不是默认的 Qt 5.2?我在 find_package 中尝试了多个用于 HINTS 的选项,但没有一个看起来有效。

最佳答案

我查看了安装 Qt5 生成的 CMake 文件,发现这些文件中没有从调用方获取的提示。一旦选取其中一个,这些 CMake 文件都使用相对路径。

也就是说,如果您正在寻找核心库,那么该核心库版本的所有依赖项都将是正确的版本。所以我们的目标是让它在您调用 find_package 时选择正确的 CMake 模块。 ,并且有几种方法可以使用 CMake 级别提示来做到这一点。

导出CMAKE_PREFIX_PATH

您可以将前缀路径设置为安装 Qt 的基本目录。基本目录是包含 lib/ 的目录和 bin/ .在您的情况下,这可能是这样的:

export CMAKE_PREFIX_PATH=/opt/Qt/5.4/gcc_64:$CMAKE_PREFIX_PATH

然后从同一个 shell session 运行您的 cmake 命令。

设置Qt5Core_DIR在你的CMakeLists.txt

这需要设置一个变量,指向您希望从中找到 Qt 的正确 CMake 根模块:

set(Qt5Core_DIR /opt/Qt/5.4/gcc_64/lib/cmake/Qt5Core)
find_package(Qt5Core REQUIRED)

当然,这个问题是如果你想找到另一个模块,你必须设置特定的 Qt5<MODULE>_DIR find_package 之前的变量打电话。

关于c++ - 如何告诉 CMake 在编译期间使用特定版本的 Qt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29833847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com