У меня есть оверлейный порт vcpkg, для которого требуется добавить собственную папку include/MYLIBRARY в системные пути включения C++. В CMake я могу легко сделать это, вызвав target_include_directories() для каждой цели, указанной в файле порта Share/MYLIBRARY/MYLIBRARY-config.cmake порта. Однако, используя файлы .vcxproj для создания потребляющих проектов через Visual Studio 2022/MSBuild, я не могу найти способ добавить эту папку во включаемые папки.
Что я пробовал:
Исправить файлы в порту: я могу исправить каждый отдельный оператор #include, подобный этому, но файлов слишком много, чтобы это было осуществимо, особенно потому, что их, скорее всего, придется заменить. в какой-то момент новыми версиями.
Добавление файлов включения оверлейного порта в файлы .vcxproj или .props потребляющих проектов : приводит к конфликту, когда функции определяются как в заголовочном файле vcpkg_installed, так и в заголовочном файле оверлейного порта.
Добавление $(VcpkgInstalledDir)include\MYLIBRARY\ в потребляющих проектов: я надеялся, что свойство VcpkgInstalledDir может быть доступно для использования в свойстве IncludePath, но оно ничего не оценивает.
Добавление $(MSBuildThisFileDirectory)vcpkg_installed\x64-windows\include\MYLIBRARY\ в потребляющих проектов, к сожалению, нежизнеспособен, поскольку есть другие триплеты для сборки.
Мне кажется, что я упускаю из виду что-то очень очевидное. Моим идеальным решением было бы наложение портов, но я внесу исправления и на стороне потребляющего проекта.
У меня есть оверлейный порт vcpkg, для которого требуется добавить собственную папку include/MYLIBRARY в системные пути включения C++. В CMake я могу легко сделать это, вызвав target_include_directories() для каждой цели, указанной в файле порта Share/MYLIBRARY/MYLIBRARY-config.cmake порта. Однако, используя файлы .vcxproj для создания потребляющих проектов через Visual Studio 2022/MSBuild, я не могу найти способ добавить эту папку во включаемые папки. Что я пробовал: [list] [*]Исправить файлы в порту: я могу исправить каждый отдельный оператор #include, подобный этому, но файлов слишком много, чтобы это было осуществимо, особенно потому, что их, скорее всего, придется заменить. в какой-то момент новыми версиями. [*]Добавление файлов включения оверлейного порта в файлы .vcxproj или .props потребляющих проектов : приводит к конфликту, когда функции определяются как в заголовочном файле vcpkg_installed, так и в заголовочном файле оверлейного порта. [*]Добавление $(VcpkgInstalledDir)include\MYLIBRARY\ в потребляющих проектов: я надеялся, что свойство VcpkgInstalledDir может быть доступно для использования в свойстве IncludePath, но оно ничего не оценивает. [*]Добавление $(MSBuildThisFileDirectory)vcpkg_installed\x64-windows\include\MYLIBRARY\ в потребляющих проектов, к сожалению, нежизнеспособен, поскольку есть другие триплеты для сборки. [/list] Мне кажется, что я упускаю из виду что-то очень очевидное. Моим идеальным решением было бы наложение портов, но я внесу исправления и на стороне потребляющего проекта.