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

能否为Conan依赖库设置CMake编译选项?以amqp-cpp为例

为Conan依赖库设置CMake编译选项(以amqp-cpp/4.3.26为例)

当然可以通过Conan为依赖库传递CMake编译选项,针对amqp-cpp/4.3.26的-DAMQP-CPP_LINUX_TCP=ON需求,具体操作分主流Conan版本说明:

Conan 2.x 操作方式

方式1:针对单个依赖传递参数

在你的conanfile.py的requirements()方法中,声明依赖时通过conf参数直接指定CMake定义:

def requirements(self):
    self.requires("amqp-cpp/4.3.26", conf={"tools.cmake.cmaketoolchain:define": "AMQP-CPP_LINUX_TCP=ON"})

方式2:全局配置(适用于多依赖或重复场景)

你可以在Conan profile文件中添加全局配置,或者通过命令行临时传递:

  • Profile配置:在你的profile文件(比如default)中添加:
[conf]
tools.cmake.cmaketoolchain:define=AMQP-CPP_LINUX_TCP=ON
  • 命令行传递:执行安装命令时直接指定:
conan install . -c tools.cmake.cmaketoolchain:define=AMQP-CPP_LINUX_TCP=ON

Conan 1.x 操作方式

如果仍在使用Conan 1.x,可通过环境变量传递CMake参数:

方式1:命令行临时传递

conan install . -e CONAN_CMAKE_ARGS="-DAMQP-CPP_LINUX_TCP=ON"

方式2:在conanfile.py中配置

def requirements(self):
    self.requires("amqp-cpp/4.3.26")

def configure(self):
    self.env_vars.CONAN_CMAKE_ARGS = "-DAMQP-CPP_LINUX_TCP=ON"

额外说明

优先检查amqp-cpp/4.3.26在Conan Center的配方是否将AMQP-CPP_LINUX_TCP封装为Conan原生options。如果有,直接通过设置options的方式更规范(比如self.options["amqp-cpp"].linux_tcp = True,具体以配方定义为准)。若配方未封装该选项,再使用上述CMake定义传递方式。

内容的提问来源于stack exchange,提问作者Sam Deadrick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:55:58