【问题标题】:Azure Pipelines: building a C++ project with outside "Include Directories"Azure Pipelines:使用外部“包含目录”构建 C++ 项目
【发布时间】:2021-11-16 21:37:44
【问题描述】:

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

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

include directory for boost image

include directory settings for opencv image

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

【问题讨论】:

  • 我最近重温了这个。它仍然无法正常工作。以下是我所做的:1.) 在我的本地计算机上设置自定义 Azure 管道代理 2.) 使用该代理进行构建 3.) 最重要的是,请注意 VSBuild 任务中的 MSBuild 参数。不过,我似乎无法得到正确的论据。我试过类似的东西: /p:IncludePath="c:\\opencv\\build\\include";$(IncludePath) /p:LibraryPath="c:\\opencv\\build\\x64\\vc15\\ lib";$(LibraryPath)

标签: azure-devops azure-pipelines azure-artifacts


【解决方案1】:

我知道该怎么做。希望没有人像我一样浪费时间。

关键是 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”

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 2020-05-25
    • 2013-02-16
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多