Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将整个openCV库构建为静态库?_C++_Opencv_Static Libraries_Webassembly_Emscripten - Fatal编程技术网

C++ 如何将整个openCV库构建为静态库?

C++ 如何将整个openCV库构建为静态库?,c++,opencv,static-libraries,webassembly,emscripten,C++,Opencv,Static Libraries,Webassembly,Emscripten,我想将整个openCV库构建成一个类似openCV.a的文件。我正在尝试使用.a二进制文件与我使用openCV库制作的cpp代码链接在一起,使用emscripten制作单个wasm文件 基本上,我想做的是将我制作的使用openCV库的cpp应用程序编译到webassembly中,这样我就可以在浏览器中运行它了。我在其他帖子上读到这样做的方法是将openCV作为.a文件获取,然后使用emscripten将其与我的cpp代码链接 如能详细解释如何生成.A文件,将不胜感激。请理解,我不是cpp开发人员

我想将整个openCV库构建成一个类似openCV.a的文件。我正在尝试使用.a二进制文件与我使用openCV库制作的cpp代码链接在一起,使用emscripten制作单个wasm文件

基本上,我想做的是将我制作的使用openCV库的cpp应用程序编译到webassembly中,这样我就可以在浏览器中运行它了。我在其他帖子上读到这样做的方法是将openCV作为.a文件获取,然后使用emscripten将其与我的cpp代码链接

如能详细解释如何生成.A文件,将不胜感激。请理解,我不是cpp开发人员,我对使用编译它的构建工具一无所知

谢谢。

构建OpenCV静态库 我认为可以将整个OpenCVlibs构建为一个大的静态lib。但强烈建议建立单一和分离的静态LIB,用于细粒化混合电镀。OpenCV项目的某些部分也很难用Emscripten编译。如果您只想使用一组OpenCV函数呢?最终的.js或.wasm文件将太大

示例opencv-em 我们编写这个脚本是为了构建项目所需的一组静态lib。它构建静态libs并打包所需的include目录

步骤构建描述 我们已经设置了一个shell脚本。我们使用cmake进行编译,因为OpenCV项目目录中存在CMakeLists.txt,这大大简化了事情:

 cmake .. -GNinja -DCMAKE_TOOLCHAIN_FILE=$EM_TOOLCHAIN $OPENCV_CONF $OPENCV_INTRINSICS -DCMAKE_CXX_FLAGS="$EM_FLAGS" -DCMAKE_C_FLAGS="$EM_FLAGS"
我们使用忍者作为编译器,但您可以使用make

-DCMAKE_TOOLCHAIN_FILE=$EM_TOOLCHAIN
这定义了本例中的工具链Emscripten:

EM_TOOLCHAIN="$EMSCRIPTEN/cmake/Modules/Platform/Emscripten.cmake"
当然,您需要使用安装Emscripten

OPENCV_CONF是一个变量,您可以在其中定义要构建的库以及要包含和排除的必要文件(这非常重要!) 还请注意,编译可能因Emscripten和OpenCV版本而异

下载 如果需要,可以在“发布”页面中下载。阅读使用的Emscripten和OpenCV版本。

使用重建