首页 > 解决方案 > Azure Pipelines:使用外部“包含目录”构建 C++ 项目

问题描述

我尝试使用尽可能多的不同术语进行搜索,但找不到我正在寻找的确切内容。我有一个在 Visual Studio 2019 中开发的 C++ 项目,我正在尝试在 Azure Pipelines 中构建和部署它。它使用BoostOpenCV。我没有尝试将这些包含在 Azure Artifacts 中,因为 Azure CLI 错误导致我花了将近半天的时间。

所以似乎有一个任务是在 .yml 文件中发布管道工件。当我的项目需要引用某个目录而不是一个特定文件或 .dll 时,我该怎么做?以下是在 Visual Studio 中如何配置的图像:

包括升压图像的目录

包括 opencv 图像的目录设置

编辑:仍在尝试,请参阅我的评论。考虑切换到 CircleCI。

标签: azure-devopsazure-pipelinesazure-artifacts

解决方案


我发现该怎么做。希望没有其他人像我一样浪费时间。

关键是 MSBuild。首先需要通过在 Visual Studio 中执行以下操作来找出 $(IncludePath) 和 $(LibraryPath) 的值:

  1. 右键单击您的项目,选择“属性”
  2. 转到构建事件选项卡,然后单击“预构建事件”
  3. 单击并展开命令行行,然后单击“编辑”
  4. 现在单击“宏>>”按钮
  5. 您将看到一堆不同的变量及其值。找到 LibraryPath 和 IncludePath 的值,将它们复制并粘贴到文本文件中。

现在,假设您已经设置了本地代理,请按照下列步骤操作:

  1. 将文本文件放在安装代理的根文件夹中。对我来说,这是“C:\agents”
  2. 将第一行设为“LibraryPath=value”,另一行设为“IncludePath=value”。对目录路径使用双斜杠。
  3. 将文件重命名为 .env。如果代理当前正在运行,请重新启动它,以便它可以读取将在构建期间使用的环境变量。
  4. 在管道的 MSBuild 任务中,指定参数。就我而言,就是这样: /p:IncludePath="C:\Program Files\boost_1_77_0;$(IncludePath)" /p:LibraryPath="$(LibraryPath)"
  5. 运行管道。您可以在本地计算机上检查已完成的构建。对我来说,它一直走的路径是“C:\agents_work\2\s”

推荐阅读