使用嵌套包含文件夹创建 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
我正在尝试为 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