c++ - 通过 cmake 构建软件时如何指定运行时库
问题描述
我已经按照他们 wiki 中给出的说明从 git 构建了 Qt 。但是,我无法使用 cmake 使用这个特定版本的 Qt 构建项目,并指出它无法生成正确的运行时路径,因为运行时库可能被我指定的 Qt 隐藏。
CMake Warning at krita/CMakeLists.txt:79 (add_executable):
Cannot generate a safe runtime search path for target krita because files
in some directories may conflict with libraries in implicit directories:
runtime library [libQt5Xml.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/usr/local/Qt-5.15.3/lib
runtime library [libQt5Widgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/usr/local/Qt-5.15.3/lib
runtime library [libQt5Gui.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/usr/local/Qt-5.15.3/lib
runtime library [libQt5Core.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/usr/local/Qt-5.15.3/lib
Some of these libraries may not be found correctly.
然后,我尝试在没有 的情况下构建它-developer-build
,以便拥有一个单独的安装目录(我使用sudo make install
它是为了将其放置在usr/local中,并且可能会被正确发现),但它仍然失败。最后,我编辑了CMakeLists.txt文件以禁用 Qt 库的系统路径,并添加了所需的路径,如下所示:
find_package(Qt5 ${MIN_QT_VERSION}
PATHS /usr/local/Qt-5.15.3
REQUIRED COMPONENTS
Core
Gui
Widgets
Xml
Network
PrintSupport
Svg
Test
Concurrent
Sql
NO_DEFAULT_PATH
)
现在,我收到了一个不同的 cmake 警告:
CMake Warning at cmake/modules/MacroKritaAddBenchmark.cmake:26 (add_executable):
Cannot generate a safe runtime search path for target
KisStrokeBenchmark because there is a cycle in the constraint graph:
dir 0 is [/home/tanmay/kritadev/build/libs/image]
dir 1 is [/usr/local/Qt-5.15.3/lib]
dir 15 must precede it due to runtime library [libQt5Widgets.so.5]
dir 2 is [/home/tanmay/kritadev/build/libs/widgets]
dir 3 is [/home/tanmay/kritadev/build/libs/flake]
dir 4 is [/home/tanmay/kritadev/build/libs/resourcewidgets]
dir 5 is [/home/tanmay/kritadev/build/libs/psd]
dir 6 is [/home/tanmay/kritadev/build/libs/pigment]
dir 7 is [/home/tanmay/kritadev/build/libs/command]
dir 8 is [/home/tanmay/kritadev/build/libs/metadata]
dir 9 is [/home/tanmay/kritadev/build/libs/widgetutils]
dir 10 is [/home/tanmay/kritadev/build/libs/resources]
dir 11 is [/home/tanmay/kritadev/build/libs/koplugin]
dir 12 is [/home/tanmay/kritadev/build/libs/store]
dir 13 is [/home/tanmay/kritadev/build/libs/global]
dir 14 is [/home/tanmay/kritadev/build/libs/version]
dir 15 is [/usr/local/Qt-5.15.2/lib]
dir 1 must precede it due to runtime library [libQt5Test.so.5]
现在,它构建并安装,但在运行时崩溃说
incompatible qt versions: 5.15.2 and 5.15.3
我需要这个手动构建的 Qt 作为运行时库,因为我希望看到所做的更改。那么,如何将运行时库设置为手动构建的 Qt?或者,这个问题有更简单的解决方案吗?任何帮助,将不胜感激。
解决方案
推荐阅读
- java - 从 RestApi 、 Retrofit 和 Rxjava 一个接一个地获取大的 json?
- python - 来自 dat 文件的数组数组
- javascript - 如果字符串不适合屏幕或在 Javascript 中确定范围,则截断字符串
- logging - 如何使用自定义日志处理程序为 Wildfly jboss 设置所有时间的最大备份日志
- wpf - ListItems 仅在调整窗口大小后显示
- c# - 未找到 nswag 命令行生成代理文件
- r - 绘图覆盖,所以在 R 循环结束时,都从列表的最后一个元素中拉出。我究竟做错了什么?
- linux - 如何在 linux 中添加 init.h 库?
- oracle11g - 当我们从富文本编辑器输入文本时,如何在 BI Publisher 报表中打印“<20%”
- python - 无法使用 delete() 从数据库中删除对象