Как я могу импортировать файл .props, который генерируется Target? - PullRequest
0 голосов
/ 08 ноября 2019

Фон

Я пытаюсь создать проект Visual Studio C ++. Мой проект импортирует файл MSBuild .targets, в котором указана одна цель, «SetupConanDependencies». Эта цель использует инструмент conan для установки зависимостей для проекта на основе файла «conanfile.txt», расположенного в корневом каталоге проекта.

Вывод этой цели состоит из нескольких файлов, в том числе «conanbuildinfo». .props "файл свойств. Я могу импортировать сгенерированный файл .props в свой проект, чтобы рассказать ему, как разрешить зависимости, которые были установлены с помощью conan.

. Вот урезанная версия моего определения цели (я проверил ипроверил, что он выдает файл «conanbuildinfo.props»):

<Target Name="SetupConanDependencies"
        Inputs="$(SolutionDir)conanfile.txt"
        Outputs="$(OutDir).conan/conanbuildinfo.props"
        BeforeTargets="ClCompile">
    <Message Importance="High" Text="Installing project dependencies with conan..." />
    <Exec Command="conan install $(ProjectDir)conanfile.txt --install-folder=$(OutDir).conan"/>
</Target>

По моему вопросу единственной важной информацией является то, что у меня есть объект Target, который генерирует файл свойств .props. Я хотел бы импортировать сгенерированный файл свойств в моем проекте перед сборкой. Однако я также хочу, чтобы Цель запускалась автоматически как часть процесса сборки.

Вопрос

Я не могу просто импортировать сгенерированный файл .props в файл .targets, потому что он еще небыл построен Target.

<Import Project="$(OutDir).conan/conanbuildinfo.props"/>
<!-- Adding this line after my Target definition results in the following error, because
     the file doesn't exist on disk at the time the .targets file is imported. -->

<!-- Error MSB4019 The imported project "D:\CustomBuildToolExample\Debug\.conan\conanbuildinfo.props" was not
     found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. -->

Кроме того, из моего текущего понимания MSBuild, файлы .props должны быть импортированы до файлов .targets. Кажется, это подразумевает, что я вообще не могу импортировать файл .props, который создается моей целью, потому что к тому моменту, когда цель генерирует файл .props, проект уже импортировал все свойства, которые он будет использовать как часть сборки. process.

Есть ли способ включить файл .props, сгенерированный объектом Target, чтобы мой проект использовал свойства, определенные в этом файле .props, как часть процесса сборки?

...