首页 > 解决方案 > 通过 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?或者,这个问题有更简单的解决方案吗?任何帮助,将不胜感激。

标签: c++qtinstallationcmakebuild

解决方案


推荐阅读