OpenCV Find_Package Emscripten - WebAssembly
OpenCV Find_Package Emscripten - WebAssembly
我尝试将 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
假设您的 OpenCV 安装是为 WebAssembly 编译的:
这一行意味着 CMake 要么安装了一些基本脚本,要么您需要指向安装 OpenCV 的目录 应该 是:
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.
很可能是您将 OpenCV 安装在非标准位置。要更具体地告诉 CMake 在哪里寻找您的依赖项,请尝试 find_package
下的 HINTS
标志。
最有可能发生的事情:
存在糟糕的错误报告,以及对 CMake 中 find_package
的多功能性的误解。本质上,您的 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
我尝试将 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
假设您的 OpenCV 安装是为 WebAssembly 编译的:
这一行意味着 CMake 要么安装了一些基本脚本,要么您需要指向安装 OpenCV 的目录 应该 是:
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.
很可能是您将 OpenCV 安装在非标准位置。要更具体地告诉 CMake 在哪里寻找您的依赖项,请尝试 find_package
下的 HINTS
标志。
最有可能发生的事情:
存在糟糕的错误报告,以及对 CMake 中 find_package
的多功能性的误解。本质上,您的 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