это ответ упоминает следующий метод для ссылки на статическую версию библиотеки C ++ [в данном случае «freeglut»], установленную через Nuget:
Project->Properties->Configuration Properties->Referenced Packages->freeglut->Linkage (select static)
В Visual Studio 2015 я не могу найти «ссылочные пакеты». Единственная явная ссылка на пакеты Nuget, которую я имею, — это файл packages.config xml. Если я зайду в раздел «Управление пакетами Nuget» проекта, я могу установить или удалить его, но не смогу найти какие-либо детали пакета.
Я искал в msdn документацию, но все страницы посвящены созданию пакета, в то время как мне нужно выделить способ использования такого пакета. Рассматриваемый пакет (Boost Unit Test Framework) может использоваться только для заголовков, со статическим или с динамическим связыванием, и я хотел бы знать, где я могу это решить.
Может быть, я старею, но Nuget для меня слишком волшебен …
ОБНОВИТЬ
Это то, что я вижу — вы можете видеть, что установлены пакеты Nuget, в частности boost, но в свойствах Configuration нет ссылки на «Ссылочные пакеты»:
Для полноты версии VS 2015 Enterprise:
14.0.25431.01 Обновление 3
и я проверил, что, когда я установил Boost Test Package, я получил как статическую (.lib), так и динамическую (.dll) версии связей, так как файлы для моей версии VS присутствуют в папке пакетов.
В Visual Studio 2015 я не могу найти «ссылочные пакеты».
Это зависит от установлен ли у вас пакет freeglut в ваш проект. Если вы создаете проект C ++ без установленного пакета NuGet, вы не можете найти «Связанные пакеты»:
После установки пакета nuget «freeglut
«,»Referenced Packages
» а также «Project Master Settings
«добавил бы к Configuration Properties
:
Обновление для Boost Package:
Вы должны установить пакет freeglut
проверить «Referenced Packages
» а также «Project Master Settings
«. Так как вы заметили различное поведение между пакетами freeglut
а также Boost
Я хотел бы предоставить больше о Нативные пакеты NuGet. После установки freeglut
а также Boost
в вашем проекте, вы можете найти freeglut.targets
а также boost.targets
в папке с пакетами (.. \ packages \ freeglut.2.8.1.15 \ build \ native & пакетов \ boost.1.64.0.0 \ build \ native), откройте их с помощью блокнота или VS, вы заметите, что:
В freeglut.targets
:
<PropertyGroup Label="Debug and static and RuntimeLibraryNull" Condition="( $(Configuration.ToLower().IndexOf('debug')) > -1 ) And '$(Linkage-freeglut.ToLower())' == 'static' And ('$(RuntimeLibrary)' == '')">
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</PropertyGroup>
<PropertyGroup Label="Release and static and RuntimeLibraryNull" Condition="( $(Configuration.ToLower().IndexOf('debug')) == -1 ) And '$(Linkage-freeglut.ToLower())' == 'static' And ('$(RuntimeLibrary)' == '')">
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</PropertyGroup>
<PropertyGroup Label="Debug and ltcg and RuntimeLibraryNull" Condition="( $(Configuration.ToLower().IndexOf('debug')) > -1 ) And '$(Linkage-freeglut.ToLower())' == 'ltcg' And ('$(RuntimeLibrary)' == '')">
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</PropertyGroup>
<PropertyGroup Label="Release and ltcg and RuntimeLibraryNull" Condition="( $(Configuration.ToLower().IndexOf('debug')) == -1 ) And '$(Linkage-freeglut.ToLower())' == 'ltcg' And ('$(RuntimeLibrary)' == '')">
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</PropertyGroup>
Это добавит опцииReferenced Packages
» а также «Project Master Settings
» с помощью PropertyGroup
в свойствах C ++.
Но в boost.targets
только файл:
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
Так лиReferenced Packages
» а также «Project Master Settings
будет добавлено на основе файла .targets в папке пакета.
Если я зайду в раздел «Управление пакетами Nuget» проекта, я могу установить или удалить его, но не смогу найти какие-либо детали пакета.
Справа от раздела «Управление пакетами Nuget» проекта вы можете заметить более подробное описание:
Я искал в msdn документацию, но все страницы посвящены созданию пакета, в то время как мне нужно выделить способ использования такого пакета.
Вы можете обратиться к документу Потреблять пакеты о том, как потреблять пакет.
Рассматриваемый пакет (Boost Unit Test Framework) может использоваться только для заголовков, со статическим или с динамическим связыванием, и я хотел бы знать, где я могу это решить.
Вы можете решить это в Project-> Properties-> Configuration Properties-> Referenced Packages-> freeglut:
Boost использует автоматическое связывание. Это означает, что исходный код Boost решает, какую библиотеку (файл) использовать в зависимости от среды сборки и конфигурации.
Обновить Вот процесс
Я согласен, процесс не очевиден. Чтобы улучшить его, Boost должен сначала завершить их модульность. Я имею в виду, когда библиотеки Boost (заголовки и двоичные файлы) могут поставляться отдельно.