OpenCV Find_Package Emscripten - WebAssembly - PullRequest
       52

OpenCV Find_Package Emscripten - WebAssembly

0 голосов
/ 23 октября 2018

Я пытаюсь скомпилировать программу C ++ в WebAssembly - это обертка над библиотекой OpenCV C ++

CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(myProject)

set(CMAKE_CXX_STANDARD 11)

find_package(OpenCV REQUIRED)
add_library(myProject STATIC myProject.cpp)

include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(myProject ${OpenCV_LIBS})

OpenCV устанавливается локально и работает нормально при компиляции с(CLion IDE)

cmake --build /Users/marek/Documents/projects/myProject/cmake-build-debug --target all -- -j 2

Однако, когда я пытаюсь скомпилировать его с

mkdir build-wasm
cd build-wasm
cmake -DCMAKE_CROSSCOMPILING_EMULATOR="/Users/marek/emsdk/node/8.9.1_64bit/bin/node" .. -DCMAKE_TOOLCHAIN_FILE=/Users/marek/emsdk/emscripten/1.38.13/cmake/Modules/Platform/Emscripten.cmake

, выдается ошибка

CMake Error at CMakeLists.txt:26 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "OpenCV", but CMake did not find one.

Could not find a package configuration file provided by "OpenCV" with any of the following names:

OpenCVConfig.cmake
opencv-config.cmake

Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV" provides a separate development package or SDK, be sure it has been installed.

Так что он не находит OpenCV

1 Ответ

0 голосов
/ 24 октября 2018

Предполагается, что ваша установка OpenCV была скомпилирована для WebAssembly :

Эта строка означает, что в CMake либо установлены некоторые базовые сценарии, либо вам нужно указать каталог, в котором находится ваш OpenCVустановка должна быть:

Не предоставляя "FindOpenCV.cmake" в CMAKE_MODULE_PATH, этот проект попросил CMake найти файл конфигурации пакета, предоставленный "OpenCV", но CMake не смогнайдите один.

Скорее всего, вы установили OpenCV в нестандартном месте.Чтобы быть более точным в сообщении CMake о том, где искать свою зависимость, попробуйте флаг HINTS под find_package.


Скорее всего, что происходит:

Существует сочетание плохих сообщений об ошибках и неправильного понимания того, насколько универсален find_package в CMake.По сути, ваша установка OpenCV не скомпилирована для WebAssembly, поэтому библиотека является недействительной.CMake (или некоторая подсистема) обнаружил, что библиотека была недействительной, и допустил ошибку.Однако сообщение об ошибке было ошибочным, так как казалось, что вы не можете найти путь к модулю OpenCV.Лучшим отчетом CMake было следующее:

If "OpenCV" provides a separate development package or SDK, be sure it has been installed.


EDIT :

Вы можете собрать OpenCV для WebAssembly из их скрипт пользовательской сборки .

...