Priya Rajput
Priya Rajput

Reputation: 101

Create Nuget package for Boost

I would like to create a nuget package for my boost library. Currently the boost folder contains subfolders such as boost, lib, pathces and readme.txt file.

How should I create a nuget package from it, should I all of these subfolders go into content folder ?

Any pointers ?

Upvotes: 1

Views: 616

Answers (1)

Sergey Shandar
Sergey Shandar

Reputation: 2387

To create a NuGet package for a native C++ library, you should add these files to the NuGet package:

  • 'build/native/{LIBRARY_NAME}.targets'
  • 'lib/native/include/{LIBRARY_HEADER_FILES}'
  • 'lib/native/{LIBRARY_LIB/DLL_FILES}'

The {LIBRARY_NAME}.targets should specify required paths to the header and lib files. For example,

<?xml version="1.0" encoding="utf-8"?>
<Project ToolVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemDefinitionGroup>
    <ClCompile>
      <PreprocessorDefinitions>;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
    <Link>
      <AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\address-model-32\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
    <Link>
      <AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\address-model-64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

At the same time, Boost NuGet packages are generated and published for all official Boost libraries using this project https://github.com/sergey-shandar/getboost.

Upvotes: 2

Related Questions