C++ 如何在通过cmake构建软件时指定运行时库
我已经根据的从git构建了Qt。但是,我无法使用cmake使用此特定版本的Qt构建项目,并指出它无法生成正确的运行时路径,因为运行时库可能被我指定的Qt隐藏C++ 如何在通过cmake构建软件时指定运行时库,c++,qt,installation,cmake,build,C++,Qt,Installation,Cmake,Build,我已经根据的从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 w
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?或者,这个问题有没有更简单的解决方案?任何帮助都将不胜感激。将系统库与您构建的系统库分开需要非常小心。对于KDE软件,我建议使用
craft
或kdesrc build
来实现这一点。