Как мне создать проект MSVC ++, который использует зависимости от vcpkg через Azure конвейер DevOps? - PullRequest
1 голос
/ 28 марта 2020

У меня есть проект C ++ с зависимостями cpprestsdk и libpqxx, и я использую vcpkg в качестве менеджера пакетов.

Я создал конвейер Azure DevOps, который использует CppBuildTask Задача клонировать и построить зависимости из vcpkg, это работает правильно, и все зависимости извлекаются и создаются успешно, но я не уверен, как на самом деле построить проект с использованием файла * .vcxproj.

Я пытался использовать задачу сборки Visual Studio, но сборка не удалась, потому что не удалось найти зависимости, которые были только что загружены CppBuildTask.

Какую правильную задачу использовать при попытке создать MSVC ++ проект с vcpkg на Azure DevOps?

Редактировать, файл конвейерного yaml:

pool:
  name: Azure Pipelines
demands:
  - msbuild
  - visualstudio

steps:
  - task: Cache@2
    displayName: Cache
  inputs:
    key: '$(Build.SourcesDirectory)/response_file.txt | 5951e0b42569257f97a5d9ac2d8c5bd4942c417b | x64-windows'
    path: '$(Build.SourcesDirectory)/vcpkg'

- task: lucappa.cmake-ninja-vcpkg-tasks.d855c326-b1c0-4d6f-b1c7-440ade6835fb.run-vcpkg@0
  displayName: 'Run vcpkg'
  inputs:
    vcpkgDirectory: '$(Build.SourcesDirectory)/vcpkg'
    vcpkgGitCommitId: 5951e0b42569257f97a5d9ac2d8c5bd4942c417b
    vcpkgArguments: '@$(Build.SourcesDirectory)/response_file.txt'
    cleanAfterBuild: false

- task: VSBuild@1
  displayName: 'Build solution TileServer\TileServer.vcxproj'
  inputs:
    solution: '$(Parameters.solution)'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    msbuildArchitecture: x64

- task: PublishSymbols@2
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: '**\bin\**\*.pdb'
    IndexSources: false
    PublishSymbols: false
  continueOnError: true

 - task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    Contents: |
     **\bin\$(BuildConfiguration)\**
     .\Renderer\Styles\Themes\DefaultTheme.json
     .\TileServer\glew32.dll
     .\TileServer\ReleaseSettings.json

    TargetFolder: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
    ArtifactName: TileServer
  condition: succeededOrFailed()
...