Как избежать автоматического c связывания библиотек Qt5 в cmake? - PullRequest
0 голосов
/ 18 января 2020

Я собираюсь скомпилировать следующий код 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 в автоматическом режиме c включает библиотеки Qt5, я хотел бы знать, как избежать этой ситуации.

1 Ответ

0 голосов
/ 18 января 2020

Идеология CMake заключается в том, чтобы никогда добавлять то, что не требуется. Возможно, что библиотеки Qt были добавлены в список конфигурации CMake.

Они могут быть включены в используемую вами стандартную переменную. Вы можете распечатать содержимое

message(STATUS "OpenCV_LIBS = ${OpenCV_LIBS}") 

Файл конфигурации выглядит как OpenCVConfig.cmake.in и может содержать другие файлы, которые по какой-либо причине были изменены.

...