Как заставить vcpkg в visual studio игнорировать определенные библиотеки

#c #visual-studio #opengl #angle #vcpkg

Вопрос:

У меня есть две разные конфигурации проекта, и я хочу связать одну из них со стандартной opengl32.lib для Windows, а другую-с углом. Проблема в том, что обе эти библиотеки реализуют интерфейс OpenGL, и я не вижу другого способа выбора между ними, кроме удаления одной библиотеки из vcpkg. Похоже, он предпочитает угол обзора. Я попытался установить библиотеки angle «без библиотек по умолчанию» в настройках проекта, а также использовать

 #pragma comment(linker,"/nodefaultlib:libANGLE.lib")
#pragma comment(linker,"/nodefaultlib:libEGL.lib")
#pragma comment(linker,"/nodefaultlib:libGLESv2.lib")
 

в источнике, но они, похоже, не соблюдаются каким-либо волшебным черным ящиком, обрабатывающим ссылки vcpkg (и, как правило, я очень благодарен за этот черный ящик).

Можно ли заставить vcpkg игнорировать набор библиотек в определенной конфигурации проекта?

Комментарии:

1. Это одна из проблем с vcpkg, пакеты устанавливаются глобально, и вам нужны разные пакеты для разных проектов, это кажется непростым: vcpkg.readthedocs.io/en/latest/about/faq/… , Конан лучше в этой области

2. Они ссылаются на то, что конфликт заголовочного файла является одной из причин, по которой даже не стоит пытаться это сделать, но при установке angle это не указывает на то, что будет конфликт. Это кажется довольно фундаментальным недостатком, вы не знаете, есть ли у них какие-либо планы по его устранению?

3. Единственное решение, которое я нашел до сих пор, — это иметь отдельные установки vcpkg и просто не устанавливать библиотеки, которые могут конфликтовать. Обычно это не проблема — библиотеки не часто конфликтуют таким образом, но OpenGL имеет долгую и неоднозначную историю, когда дело доходит до совместимости с Windows, и, вероятно, именно поэтому существует целый зверинец библиотек, которые закрывают трещины и, следовательно, конфликты (например, между Angle, glew, glfw, стандартными заголовками GL и т. Д.). Microsoft многое сделала для того, чтобы вызвать эту ситуацию, возможно, они также могли бы исправить ее с помощью отличного в остальном vcpkg?