gpt4 book ai didi

c++ - 将 NuGet Boost DLL 自动复制到输出目录

转载 作者:太空狗 更新时间:2023-10-29 23:01:31 26 4
gpt4 key购买 nike

我在我的 C++ 项目中使用了几个 Boost 库。这些库是通过 NuGet 包获取的,例如Boost 线程库 boost_thread .

在不对项目属性进行任何更改的情况下编译和链接工作。但是由于输出目录中缺少 DLL,调试和运行应用程序失败。

一种解决方案是使用构建后步骤复制所需的 DLL。这在其他地方有描述,例如how to make visual studio copy dll to output directory? .

这是调试配置中所需复制命令的示例:

xcopy /F /Y "$(SolutionDir)\packages\boost_regex-vc100.1.58.0.0\lib\native\address-model-32\lib\boost_regex-vc100-mt-gd-1_58.dll" "$(OutDir)"

该项目是 Visual Studio 2010 项目。但实际使用的IDE是Visual Studio 2013。

但是有没有更好的方法来实现这一点?

最佳答案

我正是出于这个目的使用了 MSBuild 的复制任务:

<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<BoostRT>-gd</BoostRT>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release' Or '$(Configuration)'=='Release_withPDB'">
<BoostRT></BoostRT>
</PropertyGroup>
<ItemGroup>
<BoostDlls Include="..\packages\boost_log-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_log-vc120-mt$(BoostRT)-1_59.dll;
..\packages\boost_thread-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_thread-vc120-mt$(BoostRT)-1_59.dll;
..\packages\boost_system-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_system-vc120-mt$(BoostRT)-1_59.dll;
..\packages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_chrono-vc120-mt$(BoostRT)-1_59.dll;
..\packages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_date_time-vc120-mt$(BoostRT)-1_59.dll;
..\packages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-$(PlatformArchitecture)\lib\boost_filesystem-vc120-mt$(BoostRT)-1_59.dll" />
</ItemGroup>
<Target Name="CopyFiles" AfterTargets="Build">
<Copy SourceFiles="@(BoostDlls)" DestinationFolder="$(OutDir)" />
</Target>

对 boost lib 版本 (1.59) 进行硬编码并不出色,但除此之外它运行良好。

关于c++ - 将 NuGet Boost DLL 自动复制到输出目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31032070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com