我打算编译以下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库,我想知道如何避免这种情况。
CMake的思想是从不添加不需要的内容。 Qt库可能已添加到CMake的配置列表中。
它们可能会出现在您使用的标准变量中。您可以通过
打印内容message(STATUS "OpenCV_LIBS = ${OpenCV_LIBS}")
配置文件的外观为OpenCVConfig.cmake.in,并且可能包括由于某些原因已更改的其他文件。