I have a C++ project that has cpprestsdk and libpqxx as its dependencies and I'm using vcpkg as my package manager.
I've created an Azure DevOps pipeline that uses the CppBuildTask task to clone and build the dependencies from vcpkg, this is working correctly and all the dependencies are pulled and built successfully, but I'm not sure how to actually build the project using the *.vcxproj file.
I tried using the Visual Studio Build task, but the build fails because it can't find the dependencies that were just downloaded by the CppBuildTask.
What is the correct task to use when trying to build a MSVC++ project with vcpkg on Azure DevOps?
Edit, the pipeline yaml file:
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()