67529


## 概要

Azure PipelinesでC++のNuGetパッケージを作ることはできますでしょうか?

## 背景

ローカルでビルド、NuGetへのパッケージングをしているプロジェクトのビルドとパッケージング作業を自動化するためにAzure
Pipelinesの使用を検討しています  
ローカルでNuGetへのパッケージング作業を行う際には、ビルド済みのlibやdllを1つのフォルダにまとめて、nuspecやtargetsファイルを作成してnugetコマンドの実行をしております

パッケージフォルダの構造の一部抜粋

[code]

    D:.
    │  DToolsPackage.1.0.2.nupkg
    │  DToolsPackage.nuspec
    │  tree.txt
    │  
    └─build
        └─native
            │  DToolsPackage.props
            │  DToolsPackage.targets
            │  
            ├─include
            │  ├─boost (boostのヘッダファイルが入っています)               
            │  └─DTools (DToolsのヘッダファイルが入っています)
            │          
            └─lib
                    DTools.dll
                    DTools.lib
                    DToolsd.dll
                    DToolsd.lib
    
[/code]

targetsファイル

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <Project DefaultTargets="Build" ToolsVersion="4.0" 
        xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <ImportGroup Label="PropertySheets"/>
        <PropertyGroup>
        </PropertyGroup>
        <ItemDefinitionGroup>
            <!-- プロジェクトファイルの「構成プロパティ」→「C++」に該当します。 -->
            <ClCompile>
                <!-- マクロを「HAS_NUGETDTOOLS」を定義します。 -->
                <PreprocessorDefinitions>HAS_NUGETDTOOLS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
                <!-- 追加のインクルードディレクトリに追加するフォルダーを指定します。 -->
                <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)../../build/native/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
            </ClCompile>
            <!-- プロジェクトファイルの「構成プロパティ」→「リンカー」に該当します。 -->
            <Link>
                <!-- 追加のライブラリディレクトリに追加するフォルダーを指定します。 -->
                <AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)../../build/native/lib/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
            </Link>
    
        </ItemDefinitionGroup>
        <!-- ConfigureとPlatformで場合わけ -->
        <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
            <Link>
                <!-- 追加の依存ライブラリに追加して自動リンク -->
                <AdditionalDependencies>DTools.lib;%(AdditionalDependencies)</AdditionalDependencies>
            </Link>
        </ItemDefinitionGroup>
        <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
            <Link>
                <AdditionalDependencies>DToolsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
            </Link>
        </ItemDefinitionGroup>
        <ItemGroup>
            <!-- dllのあるフォルダパスを指定 -->
            <NativeLibs Include="$(MSBuildThisFileDirectory)../../build/native/lib/*.dll" />
            <None Include="@(NativeLibs)">
                <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
                <!-- 出力フォルダにdllを自動で上書き -->
                <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
            </None>
        </ItemGroup>
    
    </Project>
    
[/code]


CC BY-SA 4.0
2020-06-09T05:16:24.537
67438
2020-06-11T05:15:12.730
19500
question
c++ azure nuget
Azure DevOpsのPipelinesでC++のNuGetパッケージを作成したい


できますよ。昔Python 2.7とか、ICU4CのNuGetパッケージ作ってました。だいぶ前なのですが(まだPipelinesになる前)、ご参考に。

<https://github.com/kkamegawa/Python27Dev_NuGet>  
<https://github.com/kkamegawa/ICU4C_Nuget>


CC BY-SA 4.0
2020-06-11T05:15:12.730
67529
2020-06-11T05:15:12.730
35711
67438
answer