使用CPack生成NuGet包遇NU5119警告 如何配置NoDefaultExcludes打包.开头文件
仅通过CPack的两种解决方案
- 方案1:使用自定义nuspec模板(适用于CMake 3.18及以上版本)
- 先运行一次基础CPack打包命令,从输出的临时文件目录中提取自动生成的
.nuspec文件作为基础模板 - 在模板的
<metadata>节点内添加<NoDefaultExcludes>true</NoDefaultExcludes>配置,开启对文件名以「.」开头文件的包含规则;也可以直接在<files>节点下手动添加需要打包的点开头文件对应的<file>条目 - 在项目的
CMakeLists.txt中添加配置:set(CPACK_NUGET_NUSPEC_TEMPLATE "你的自定义模板文件路径"),CPack打包时会直接使用该模板生成最终NuGet包,替代默认自动生成逻辑
- 先运行一次基础CPack打包命令,从输出的临时文件目录中提取自动生成的
- 方案2:使用预构建钩子动态修改nuspec(全版本兼容)
- 编写独立的CMake修改脚本,逻辑为读取CPack自动生成的临时nuspec文件,通过字符串替换在
<metadata>节点中插入NoDefaultExcludes配置后回写文件 - 在
CMakeLists.txt中添加配置:set(CPACK_PRE_BUILD_SCRIPTS "你的修改脚本路径"),CPack会在正式执行NuGet打包前自动运行该脚本,修改完成后再继续打包流程
- 编写独立的CMake修改脚本,逻辑为读取CPack自动生成的临时nuspec文件,通过字符串替换在
两种方案均完全依赖CPack原生功能实现,无需额外调用NuGet命令或引入第三方工具。
内容的提问来源于stack exchange,提问作者Vijay Katoch
相关产品推荐
相关产品推荐

