是否有一种在windows上分发C/C++开发包(无源代码)的首选规范方式

Is there a preferred canonical way to distribute C/C++ development packages (without source) on windows?

本文关键字:源代码 开发包 C++ 方式 一种 windows 是否      更新时间:2023-10-16

是否有一种首选的规范方式将开发包(例如DLL和头文件)分发给windows上的开发人员(没有源文件)?

来自Linux背景,我更喜欢将一个项目分为三个包:

  • 运行时-例如包含/opt/foo/lib/libbar.so -> /opt/foo/lib/libbar.so.1.2.3libfoo-1.2.3.rpm
  • 一个开发包,例如包含/opt/foo/include/bar.hlibfoo-devel.1.2.3.rpm
  • 源代码包,例如libfoo.1.2.3-src.tgz,包含源代码和构建机制

如果给一个具有类似目录布局的zip文件,我预计很少有windows开发人员会抱怨。例如

foo-devel.zip: 
foo/doc/foobar.pdf
foo/include/bar.h
foo/lib/libbar.dll
foo/lib/libbar.lib

仅为了完整性(脱离主题),运行时可能是:

foo-runtime.zip: 
foo/doc
foo/lib/libbar.dll

或:

foo-runtime.msi-将libbar.dll安装到适当的位置

然而,我仍然很好奇,是否真的有首选的方式?

例如,您是否应该提供要安装在构建机器上的foo-devel.msi?

我对什么东西应该进图书馆这个问题不感兴趣。任何人都可以看到例如在windows 上分发(本机C++)库

如果提供C++接口而不是仅提供C接口,那么仍然值得记住ABI兼容性问题。

另一个相关的问题是,是否有分发Windows本机C库的最佳实践指南?。这个问题涵盖了什么,但这个问题问如何

在Windows上分发可再分发文件的规范(在一定程度上)方式是Windows安装程序合并模块(msm)。它打算集成到另一个Windows安装程序(msi)包中。DLL应该放在那里,因为它们是运行时需要的文件。

至于开发文件(例如头文件、库等),在Windows上的文件系统中没有标准的组织方式。因此,它可以是一个简单的归档文件或msi包。对于msi包,不需要管理员帐户来安装它是有意义的。