如何避免在 cmake 中自动链接 Qt5 库?
Posted
技术标签:
【中文标题】如何避免在 cmake 中自动链接 Qt5 库?【英文标题】:how avoid automatic linking of Qt5 libraries in cmake? 【发布时间】:2020-05-04 21:56:28 【问题描述】:我打算编译如下opencv代码:
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
printf("hello world \n");
return 0;
我的 CMakeLists.txt 如下:
cmake_minimum_required(VERSION 2.8)
find_package( OpenCV REQUIRED )
project( main )
add_executable(main main.cpp )
target_link_libraries( main $OpenCV_LIBS )
编译后的结果如下:
[ 50%] Building CXX object CMakeFiles/main.dir/main.cpp.o
[100%] Linking CXX executable main
/usr/bin/ld: cannot find -lQt5::Core
/usr/bin/ld: cannot find -lQt5::Gui
/usr/bin/ld: cannot find -lQt5::Widgets
/usr/bin/ld: cannot find -lQt5::Test
/usr/bin/ld: cannot find -lQt5::Concurrent
/usr/bin/ld: cannot find -lQt5::OpenGL
collect2: error: ld returned 1 exit status
CMakeFiles/main.dir/build.make:143: recipe for target 'main' failed
make[2]: *** [main] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/main.dir/all' failed
make[1]: *** [CMakeFiles/main.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
我相信 CMake 以自动方式包含 Qt5 库,我想知道如何避免这种情况。
【问题讨论】:
【参考方案1】:CMake 的理念是从不添加不需要的东西。 Qt 库可能已添加到 CMake 的配置列表中。
它们可能出现在您使用的标准变量中。您可以通过
打印内容message(STATUS "OpenCV_LIBS = $OpenCV_LIBS")
配置文件看起来 OpenCVConfig.cmake.in 并且可能包含由于某种原因被更改的其他文件。
【讨论】:
以上是关于如何避免在 cmake 中自动链接 Qt5 库?的主要内容,如果未能解决你的问题,请参考以下文章
CMake 链接 Qt5::Svg 但 QImageReader 看不到
CMake:如何避免 HDF5 系统和 conda 安装中的不匹配?