You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Conan包中的二进制文件?以Emscripten环境为例

使用Conan管理的Emscripten构建项目:更简洁的二进制调用方案

你当前通过Conan将Emscripten(emsdk/3.1.23)作为构建依赖完成了基础安装,但调用其二进制文件时遇到了麻烦——imports无法导入emsdk的文件,目前用conan info + awk的脚本临时解决,但可以用更简洁的方式实现。

推荐方案1:使用virtualrunenv生成器自动配置环境

这是最便捷的方式,Conan的virtualrunenv生成器会自动收集所有依赖(包括构建依赖)的环境变量配置,直接帮你完成路径和工具链的设置:

  1. 修改你的conanfile.txt,添加virtualrunenv生成器:
[requires]
libxml2/2.10.3
zlib/1.2.13
zstd/1.5.2

[generators]
cmake
virtualrunenv
  1. 执行Conan安装命令:
conan install . -pr:h emscripten -pr:b default
  1. 激活环境脚本:
    安装完成后会生成对应平台的环境脚本,执行后即可直接调用Emscripten工具链:
# Linux/macOS
source conanrun.sh

# Windows(PowerShell)
.\conanrun.ps1

激活后,emcc、em++等命令可以直接使用,nodejs的路径也会自动加入PATH,无需手动设置。

如果不想手动激活脚本,也可以用conan run直接在配置好的环境中执行构建命令:

conan run . -pr:h emscripten -pr:b default -- emcc your_source.c -o output.wasm

方案2:在Profile中直接配置环境变量

如果不想使用生成器,也可以在host profile的[env]段直接添加路径配置,简化你之前的脚本逻辑:

[settings]
os=Emscripten
arch=wasm
compiler=clang
compiler.version=16
build_type=Release

[build_requires]
emsdk/3.1.23

[options]
libxml2:ftp=False
libxml2:shared=False
libxml2:threads=False

[env]
# 自动添加emsdk和nodejs的二进制路径
PATH+=($(conan info . --package-filter emsdk/3.1.23 --paths --only "package_folder" -pr:h emscripten -pr:b default | awk ' $2 != "" {print $2}')/bin)
PATH+=($(conan info . --package-filter nodejs/16.3.0 --paths --only "package_folder" -pr:h emscripten -pr:b default | awk ' $2 != "" {print $2}')/bin)

执行conan install后,后续的终端会话就能直接调用相关工具了。

为什么imports没生效?

Conan的imports默认仅处理[requires]中的业务依赖,[build_requires]的构建依赖不会被自动导入。如果一定要用imports,需要在conanfile中添加imports:build_requires=True,但这种方式会把emsdk的二进制复制到本地目录,不如直接复用Conan安装的原生路径高效,因此更推荐virtualrunenv方案。

内容的提问来源于stack exchange,提问作者Robert Stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:35:29