如何避免在cmake中自动链接Qt5库?

时间:2020-01-18 02:31:05

标签: c++ cmake linker qt5 qt4

我打算编译以下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 个答案:

答案 0 :(得分:0)

CMake的思想是从不添加不需要的内容。 Qt库可能已添加到CMake的配置列表中。

它们可能出现在您使用的标准变量中。您可以通过

打印内容
message(STATUS "OpenCV_LIBS = ${OpenCV_LIBS}") 

配置文件的外观为OpenCVConfig.cmake.in,并且可能包含由于某些原因已更改的其他文件。

相关问题