在 Visual Studio 中使用使用 CPack 创建的 NuGet 包

问题描述 投票:0回答:1

我正在使用 CPack 创建 C++ CMake 项目的 NuGet 包。

cmake -S . -B build
cmake --build build --config Release
cd build
cpack -G NuGet -C 'Release'

我定义了几个cpack变量,例如:

CPACK_PACKAGE_NAME
CPACK_PACKAGE_VENDOR
CPACK_PACKAGE_DESCRIPTION
  • 包生成成功。它包含一个 includelib 目录,正如 CMake 的
    install()
    命令一样。
  • 我可以将 NuGet 包添加到 Visual Studio 中的项目中。内容已安装。
  • 但是该项目找不到标头和库。我猜包中缺少元数据。

如何添加此信息?还是我错过了什么?

visual-studio cmake nuget cpack
1个回答
0
投票

我正在寻找的元信息可以在 .targets 文件中找到。请参阅此处了解更多信息。

所以我手动创建了这样一个文件,并使用 cmake

install()
指令添加它,这样 cpack 就会将其包含在 NuGet 包中。重要提示:必须在
<nuget root>/build/**/<nuget name>.targets
找到它。它看起来像这样:

<Project>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>
        $(MSBuildThisFileDirectory)../lib/foo.lib;
  [...]
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>
        $(MSBuildThisFileDirectory)../include;
  [...]
  <ItemGroup>
    <None Include="$(MSBuildThisFileDirectory)../bin/foo.dll">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  [...]

我主要是从其他 nuget 文件反向工程语法。我对这个解决方案不是 100% 满意。但它有效。

如果您知道任何信息,请免费告诉我更多信息:-)

© www.soinside.com 2019 - 2024. All rights reserved.