如何在Conan的[imports]中匹配DLL架构与构建类型并复制到对应目录
解决Conan按架构和构建类型复制DLL到对应目录的问题
你可以利用Conan内置的settings变量和条件导入规则,在conanfile.txt的[imports]段中实现精准匹配复制。具体配置如下:
1. 编写带条件的导入规则
在你的conanfile.txt中添加以下[imports]配置:
[imports] # 匹配x64架构,将DLL复制到对应Release/Debug目录 bin, *.dll -> ./build/${settings.build_type}_x64: settings.build_arch=x86_64 # 匹配Win32架构,将DLL复制到对应Release/Debug目录 bin, *.dll -> ./build/${settings.build_type}_Win32: settings.build_arch=x86
2. 配置说明
${settings.build_type}:Conan内置变量,对应你指定的构建类型(Release或Debug),会自动替换为实际值。- 条件后缀
: settings.build_arch=xxx:只有当Conan的build_arch设置为对应值时,才执行这条导入规则。比如指定build_arch=x86_64时,只会执行第一条规则,将DLL复制到build/Release_x64或build/Debug_x64。 - 注意:如果你的目录是
Relase_x64(少了字母e),需要修正为Release_x64,否则路径匹配会失败。
3. 执行Conan安装命令时指定正确的Settings
执行conan install时,必须明确指定build_type和build_arch,才能触发对应的复制逻辑:
# 安装Release x64依赖并复制DLL到build/Release_x64 conan install . --settings build_type=Release --settings build_arch=x86_64 -s compiler="Visual Studio" # 安装Debug Win32依赖并复制DLL到build/Debug_Win32 conan install . --settings build_type=Debug --settings build_arch=x86 -s compiler="Visual Studio"
这样就能自动将对应架构、对应构建类型的DLL精准复制到你项目build目录的子文件夹中。
内容的提问来源于stack exchange,提问作者user19254034
相关产品推荐
相关产品推荐

