Создание проекта cmake c ++, который включает библиотеку opencv - PullRequest
0 голосов
/ 17 января 2019

Я строю проект c ++ с CMake, этот проект зависит от библиотеки OpenCV, которая была установлена ​​с помощью Vcpkg.

Вот мой CMakeList.txt файл:

# CMakeList.txt : CMake project for CMakeProject2, include source and define
# project specific logic here.
#
cmake_minimum_required (VERSION 3.8)
set( CMAKE_TOOLCHAIN_FILE "C:/vcpkg/scripts/buildsystems/vcpkg.cmake" )


# Find Package
find_package( OpenCV REQUIRED )

# Additional Include Directories
include_directories( ${OpenCV_INCLUDE_DIRS} )

message("hello world " ${OpenCV_LIB_DIR} ${OpenCV_LIBS})

# Additional Library Directories
link_directories( ${OpenCV_LIB_DIR} )
link_libraries(${OpenCV_LIBS})


#set( OpenCV_DIR "C:/vcpkg/installed/x64-windows/share/opencv" )
# Add source to this project's executable.
add_executable (CMakeProject2 "CMakeProject2.cpp" "CMakeProject2.h")

# Additional Dependencies
target_link_libraries( CMakeProject2 ${OpenCV_LIBS} )

CMakeProject2.cppfile:

#include "CMakeProject2.h"
#include <iostream>
#include "opencv2/opencv.hpp"

using namespace cv;

using namespace std;

int main()
{
    cout << "OpenCV version : " << CV_VERSION << endl;
    cout << "Hello CMake." << endl;
    return 0;
}

Я использую эти команды для создания этих проектов:

  1. cmake ..\CMakeProject2 -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake
  2. make

и вот что я получаю:

\CMakeProject2\build>make
[ 50%] Linking CXX executable CMakeProject2.exe
CMakeFiles\CMakeProject2.dir/objects.a(CMakeProject2.cpp.obj):CMakeProject2.cpp:(.text$_ZN2cv6StringD1Ev[_ZN2cv6StringD1Ev]+0x11): undefined reference to `cv::String::deallocate()'
CMakeFiles\CMakeProject2.dir/objects.a(CMakeProject2.cpp.obj):CMakeProject2.cpp:(.text$_ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x25): undefined reference to `cv::String::deallocate()'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [CMakeProject2.exe] Erreur 1
make[1]: *** [CMakeFiles/CMakeProject2.dir/all] Erreur 2
make: *** [all] Erreur 2

Ответы [ 2 ]

0 голосов
/ 31 января 2019

В скором времени вы не можете использовать -G "MinGW Makefiles".

В настоящее время vcpkg не поддерживает MinGW.

Это было запрошено , но в итоге оно не было реализовано , и заключительный комментарий от сопровождающих vcpkg состоит из этого предложения для тех, кто хотел бы снова выбрать поддержку MinGW:

Однако мы пока мало изучали использование mingw. Если у вас есть функционирующий файл CMake toolchain, вы можете следить за нашим триплетом документация [1] для создания файла triplets/x64-windows-mingw.cmake который будет использовать этот набор инструментов для создания библиотек.

[1] https://github.com/Microsoft/vcpkg/blob/master/docs/users/triplets.md

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

Мне нужно было выполнить эти команды:

cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake ..

и

cmake --build . --config Release
...