emscripten cmake 环境配置
emscripten 在 ubuntu 上的安装和配置相对比较顺利,但在Windows上遇到不少坑
步骤:
1. git clone https://github.com/emscripten-core/emsdk.git
这个repo只是包含了sdk的安装程序,然后靠emsdk命令来安装真正的emscrtipen sdk和相关依赖
2. 进入 emsdk 目录,执行 ./emsdk install latest
在Windows上会下载 Java, Node, Python 和 fastcomp; fastcomp 就是 emscripten 的 sdk
下载的目录是 ./zips, 如果下载较慢,可以直接拷贝下载地址到迅雷,然后拷贝到 zips下,注意一定要拷贝,不能剪切,因为 该命令 会删除掉下载的文件,另外,新版的 下载脚本 会忽略 zips 中已有的文件,会覆盖下载,这时需要修改 emsdk.py, 具体修改如下 git diff 的结果
@@ -1258,7 +1258,7 @@ def download_and_unzip(zipfile, dest_dir, download_even_if_exists=False, filenam# target directory, since it may be a new version of a tool that gets# installed to the same place (that is, a different download name# indicates different contents).
- download_even_if_exists = True
+ # download_even_if_exists = True // liyh download by xunleireceived_download_target = download_file(url, zips_subdir, download_even_if_exists, filename_prefix)if not received_download_target:
@@ -1722,8 +1722,8 @@ class Tool(object):# if we are downloading a zip, we will unpack and delete it after immediately anyhow,# so there is no need to look for an existing one (which may have been left behind# due to an error in the past)
- if url.endswith(ARCHIVE_SUFFIXES):
- download_even_if_exists = True
+ #if url.endswith(ARCHIVE_SUFFIXES): # liyh download by xunlei
+ # download_even_if_exists = Truefilename_prefix = getattr(self, 'zipfile_prefix', '')success = download_and_unzip(url, self.installation_path(), download_even_if_exists=download_even_if_exists, filename_prefix=filename_prefix)else:
3. 执行 ./emsdk activate latest
4. 设置环境变量, emsdk_env.bat,
建议不要每次执行这个脚本,而是将环境变量直接配置到Windows系统中,原因是这个脚本会冲掉vs的环境变量,即:如果先进入了 vs 的 Developer Command Prompt 然后执行它,会导致vs的环境变量被干掉, 如果不想设置到系统中,就需要先执行emsdk_env.bat 然后再执行 vs的 Developer Command Prompt 的bat(“C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat”)
5. 环境变量都ok后就能执行 emconfigrure cmake .
即 在 原来CMake . 的命令前加上了 emconfigrure, 按文档说明,emconfigrure主要是修改了 cc compile 等CMake变量
如果要使用 Windows 里的 nmake,就需要执行 emconfigure cmake . -G “NMake Makefiles” 告诉 cmake 生成 nmake 脚本
如果CMakeLists.txt 中没有用到 target_link_libraries 命令,会已有一个错误提示
shared:ERROR: no input files
note that input files without a known suffix are ignored, make sure your input files end with one of: ('.c', '.C', '.i', '.cpp', '.cxx', '.cc', '.c++', '.CPP', '.CXX', '.CC', '.C++', '.ii', '.m', '.mi', '.mm', '.mii', '/dev/null', '.bc', '.o', '.obj', '.lo', '.dylib', '.so', '.a', '.ll', '.h', '.hxx', '.hpp', '.hh', '.H', '.HXX', '.HPP', '.HH')
可以忽略,不影响最后的编译,如果要屏蔽他,可以随便加入一个库如: target_link_libraries(app pthread)
6. 最后一步执行 emmake nmake 来 完成编译
另外:尝试了在Windows上使用 WSL (Windows Subsystem Linux)来进行emscripten 的环境配置,但是没有成功,卡在了./emsdk install latest,这一步会下载依赖的安装程序,安装程序会做调用tar来解包,解包过程中 出现了 tar: Cannot create symlink to Operation not permitted 的错误,初步怀疑是文件系统(exFAT)的原因,没有深究了
后续发现了原因,就是因为文件系统的原因,尝试在WSL中的这个磁盘上创建一个软链接,返回了相同的错误,至于如何解决,没有深究了。
附
1. 执行 ./emsdk install latest 时 npm 网络访问失败
始终停在 Running post-install step: npm ci … 然后 timeout
原因是 npm 访问的站点无法访问,需要配置registry,指向淘宝
执行如下命令,就ok
npm config set https-proxy null
npm --registry https://registry.npm.taobao.org info underscore
在 文件 ~/.npmrc 中添加
registry = https://registry.npm.taobao.org/
emscripten cmake 环境配置相关推荐
- NDK01-打包静态库 动态库在mk和cmake环境配置使用
动态库和静态库 动态库: libxxx.so 运行的时候,才会去加载,加载一次就在内存中存在副本,其他地方使用就都是公用的.使用场景就是 高德百度sdk对外开房 静态库: libxxx.a 编译期把静 ...
- 基于Ubuntu20.04配置Emscripten开发环境
Emscripten环境配置 1.简介 2.依赖环境 3.环境搭建 4.辅助调试环境 1.简介 Emscripten 编译器基于 LLVM ,该编译器可以将 C / C++ 的代码编译成 JavaSc ...
- Windows10 + Visual Studio 2017 + CMake +OpenCV编译、开发环境配置及测试
由于最近需要使用OpenCV,本人需要在自己的PC上使用OpenCV,因此最近一直在研究如何使用Visual Studio编译OpenCV源代码并搭建开发环境,折腾了很长时间,查阅了很多相关资料,终于 ...
- 【C++ 语言】Visual Studio 配置 FFMPEG 开发环境 ( VS2019 CMake 环境安装 | 下载 FFMPEG 开发包 | 配置 FFMPEG )
文章目录 Visual Studio 2019 社区版 CMakeList 开发环境安装 创建 FFMPEG 配置项目 FFMPEG 开发包下载 FFMPEG 头文件 静态链接库 ( .lib ) 动 ...
- windows10下Qt环境OpenCV配置【CMake环境】
对于刚开始了解OpenCV或是用不到OpenCV_contrib库的情况,不建议自己编译OpenCV.交叉编译最大的问题就是无法正常下载需要的库.早些年玩OpenWRT编译一次需要几天 ...
- 安装Emscripten编译环境
安装Emscripten编译环境 1.各类安装工具让它一键安装 $ sudo apt update $ sudo apt install vim openssh-server git curl wge ...
- qt程序 html安装,qt webassembly emscripten build 环境搭建
环境搭建 本文主要是针对ubuntu/mac编译环境搭建和调试环境 可以直接参考下面的dockerfile 1.运行环境 选择了虚拟机里安装了ubuntu版本和内核号如图 首先下载 # Get the ...
- 一次搞定OpenCV源码及扩展模块的编译与环境配置
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|计算机视觉工坊 版本:VS2017.CMake3.12. ...
- 开发环境配置--Ubuntu+Qt4+OpenCV(三)
同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...
最新文章
- 基于C++与VS2012的HDF5文件处理(二)
- Android MVC结构的浅见【转】
- 计算机电容的作用,电容和电感的作用
- earning Multi-Domain Convolutional Neural Networks for Visual Tracking
- UIView的layoutSubviews和drawRect方法何时调用
- MQTT protocol level的处理
- redis 基本类型和命令(一)
- 二次扩增产物条带弥散_PCR实验操作常见解决方法
- node.js 使用domain模块捕获异步回调中的异常
- 7-9 一元多项式的乘法与加法运算 (20 分)
- ORB-SLAM 解读(五) 地图点投影进行特征匹配
- android.mk 依赖关系,Android NDK学习(二):编译脚本语法Android.mk和Application.mk
- 泛微 linux mobile手册,泛微E-Mobile5.0服务端安装手册.doc
- 华为云学习笔记(二)
- android 服务自动运行怎么办,Android服务开机自动运行
- 导航系统中里程计研究综述
- 从计算机硬件系统来看 不管计算机配置,计算机组装与维修章节练习题201311
- ResizeObserver loop limit exceeded报错解决方案
- 山东科技大学计算机学院奖学金,山东科技大学:一份特殊“奖学金”
- 网安之php开发第十四天