使用嵌套包含文件夹创建 C++ NuGet 包

Create c++ NuGet package with nested include folders

我正在尝试为 C++ 打包一个工具包,其中的包含文件分布在多个文件夹中,如下所示: Includes - cen_dcm -dcmnet -ofstd -dcmdata

nuspec 内部是:include: { ${SDK_Base}\cen_dcm\**\*.h };

部署此包后,我在以下位置获得了包含文件: ..\packages\DCMTK.3.42.0.0\build\native\include 包括子文件夹。

当我使用包含 IntelliSense 时,找到它没有问题,但如果该包含文件包含来自不同文件夹的内容,则无法找到它。

所以我使用:#include"dcmnet/assoc.h" 效果很好,但是在编译时 assoc.h 它报告找不到 osconfig.h

该文件在包中,但在 ofstd 文件夹中。 通常我会通过添加额外的包含来解决这个问题,但是因为这是一个包我不想要那个。

我错过了什么?我无法想象缺乏对如此基本的东西的支持?

回答我自己的问题。您可以将 {targets} 添加到您的 autopkg 文件中。

看起来像这样:

targets {
      Includes += "$(MSBuildThisFileDirectory)..\..${d_include}cen_dcm";
      Includes += "$(MSBuildThisFileDirectory)..\..${d_include}cen_dcm\config";
      Includes += "$(MSBuildThisFileDirectory)..\..${d_include}cen_dcm\dcmtls";
      Includes += "$(MSBuildThisFileDirectory)..\..${d_include}cen_dcm\dcmdata";
      Includes += "$(MSBuildThisFileDirectory)..\..${d_include}cen_dcm\dcmnet";
      Includes += "$(MSBuildThisFileDirectory)..\..${d_include}cen_dcm\ofstd";
   }

这个额外的包含文件夹将显示在您的 package.targets 文件中。

使用{targets}有更多的可能性。参见 http://coapp.org/reference/autopackage-ref.html