Conan构建Arrow配方时如何为CMake设置ARROW_RUNTIME_SIMD_LEVEL选项
问题原因
官方提供的Arrow Conan配方没有将ARROW_RUNTIME_SIMD_LEVEL暴露为Conan配置选项,也没有默认读取同名环境变量传递给CMake构建流程,因此直接通过-e参数设置环境变量无法生效。
解决方案
方案1:透传CMake变量(快速测试用,无需修改配方)
根据你使用的Conan版本选择对应命令:
- Conan 2.x:通过conf配置直接传递CMake变量到构建流程
conan install .. --build=arrow -c tools.cmake.cmaketoolchain:variables="ARROW_RUNTIME_SIMD_LEVEL=NONE"
- Conan 1.x:通过CMAKE_ARGS环境变量传递参数
conan install .. --build=arrow -e CMAKE_ARGS="-DARROW_RUNTIME_SIMD_LEVEL=NONE"
方案2:自定义Arrow配方(长期使用更可控)
如果需要频繁调整该配置,可以自定义Arrow的Conan配方,将SIMD级别暴露为标准选项:
- 新建自定义Arrow配方
conanfile.py:
from conan import ConanFile from conan.tools.cmake import CMake class ArrowCustomRecipe(ConanFile): name = "arrow" # 替换为你实际使用的Arrow版本号 version = "x.x.x" options = { "runtime_simd_level": ["NONE", "SSE4_2", "AVX2", "AVX512", "MAX"] } default_options = { "runtime_simd_level": "MAX" } def build(self): cmake = CMake(self) # 将Conan选项映射为Arrow的CMake配置项 cmake.definitions["ARROW_RUNTIME_SIMD_LEVEL"] = self.options.runtime_simd_level cmake.configure() cmake.build()
- 执行构建时直接指定选项即可:
conan install .. --build=arrow -o arrow:runtime_simd_level=NONE
验证方法
构建时查看CMake输出日志,确认ARROW_RUNTIME_SIMD_LEVEL的取值已更新为你设置的NONE即可。
内容的提问来源于stack exchange,提问作者JACH
相关产品推荐
相关产品推荐

