azure-devops - Azure Pipelines:使用外部“包含目录”构建 C++ 项目
问题描述
我尝试使用尽可能多的不同术语进行搜索,但找不到我正在寻找的确切内容。我有一个在 Visual Studio 2019 中开发的 C++ 项目,我正在尝试在 Azure Pipelines 中构建和部署它。它使用Boost和OpenCV。我没有尝试将这些包含在 Azure Artifacts 中,因为 Azure CLI 错误导致我花了将近半天的时间。
所以似乎有一个任务是在 .yml 文件中发布管道工件。当我的项目需要引用某个目录而不是一个特定文件或 .dll 时,我该怎么做?以下是在 Visual Studio 中如何配置的图像:
编辑:仍在尝试,请参阅我的评论。考虑切换到 CircleCI。
解决方案
我发现该怎么做。希望没有其他人像我一样浪费时间。
关键是 MSBuild。首先需要通过在 Visual Studio 中执行以下操作来找出 $(IncludePath) 和 $(LibraryPath) 的值:
- 右键单击您的项目,选择“属性”
- 转到构建事件选项卡,然后单击“预构建事件”
- 单击并展开命令行行,然后单击“编辑”
- 现在单击“宏>>”按钮
- 您将看到一堆不同的变量及其值。找到 LibraryPath 和 IncludePath 的值,将它们复制并粘贴到文本文件中。
现在,假设您已经设置了本地代理,请按照下列步骤操作:
- 将文本文件放在安装代理的根文件夹中。对我来说,这是“C:\agents”
- 将第一行设为“LibraryPath=value”,另一行设为“IncludePath=value”。对目录路径使用双斜杠。
- 将文件重命名为 .env。如果代理当前正在运行,请重新启动它,以便它可以读取将在构建期间使用的环境变量。
- 在管道的 MSBuild 任务中,指定参数。就我而言,就是这样: /p:IncludePath="C:\Program Files\boost_1_77_0;$(IncludePath)" /p:LibraryPath="$(LibraryPath)"
- 运行管道。您可以在本地计算机上检查已完成的构建。对我来说,它一直走的路径是“C:\agents_work\2\s”
推荐阅读
- swift4.2 - 如何在过滤器不起作用时进行正确的搜索
- python - 迭代三行然后进行线性回归
- msbuild - 错误 MSB3086:任务无法使用 SdkToolsPath“”找到“LC.exe”
- apache-spark - Hive Warehouse Connector + Spark = 签名者信息与同包中其他类的签名者信息不匹配
- android - Android Mapbox如何在使用CirclceClustering层时捕获标记点击
- mysql - 列计数与第 1 行的值计数不匹配
- getgauge - 仪表插件记录器
- eclipse - 当我在 Eclipse 中使用带有 Maven 的黄瓜时,它无法识别 @given、@when、@then
- python - AttributeError:Seaborn 点图的未知属性 y
- asynchronous - 等待未来飞镖超时