【问题标题】:OpenCV Find_Package Emscripten - WebAssemblyOpenCV Find_Package Emscripten - WebAssembly
【发布时间】:2018-10-23 20:26:19
【问题描述】:

我尝试将 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

【问题讨论】:

    标签: c++ opencv cmake emscripten webassembly


    【解决方案1】:

    假设您的 OpenCV 安装是为 WebAssembly 编译的:

    这行意味着 CMake 要么确实安装了一些基本脚本,要么你需要指向你的 OpenCV 安装目录应该是:

    由于没有在 CMAKE_MODULE_PATH 中提供“FindOpenCV.cmake”,该项目要求 CMake 查找“OpenCV”提供的包配置文件,但 CMake 没有找到。

    很可能是您将 OpenCV 安装在了非标准位置。要更具体地告诉 CMake 在哪里寻找您的依赖项,请尝试 find_package 下的 HINTS 标志。


    很可能发生了什么:

    错误报告错误,以及对find_package 在 CMake 中的多功能性存在误解。本质上,你的 OpenCV 安装不是为 WebAssembly 编译的,所以这个库是无效的。 CMake(或某些子系统)检测到库无效,并出错。但是,该错误消息具有误导性,因为它使您看起来好像找不到 OpenCV 模块的路径。 CMake 所做的最好的报告如下:

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


    编辑:

    您可以从他们的custom build script 为 WebAssembly 构建 OpenCV。

    【讨论】:

    • 是的,我最终尝试了他们的脚本并且成功了,但是它生成了一个 10MB 的 js 文件。你如何才能为选定的模块而不是整个库创建绑定?
    • @Marek 你使用他们的原始构建脚本?比如,你只是逐字逐句地运行它?
    • 我刚刚运行了 python ./platforms/js/build_js.py build_wasm --build_wasm --enable_exception --emscripten_dir=/path/to/emcc
    猜你喜欢
    • 2020-08-28
    • 1970-01-01
    • 2019-05-15
    • 2020-08-23
    • 2018-09-21
    • 2020-05-15
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多