如何在Windows/MSVC上自动查找或生成C库依赖项?
问题描述:
我有一个需要libpng,zlib和lcms库的C工具。在unix上,我通过pkg-config
获得了这些依赖关系,但是在Windows上我不能依赖它,所以对于构建库的用户来说,手动获取和构建这些依赖关系是一项巨大的麻烦。如何在Windows/MSVC上自动查找或生成C库依赖项?
我如何可以自动在大多数Windows原生的方式获得这些依赖关系?我知道MinGW的帮助,但这是一个阴谋。我想了解如何使用Microsoft工具链进行操作。
- 在Windows上搜索共享的非微软库有没有意义,还是应该直接静态链接我自己的?
- 如果我要下载并构建库作为构建脚本的一部分,应该使用什么? (nuget?curl?ftp.exe?)
- 似乎微软不鼓励使用NuGet for C? https://github.com/Microsoft/vcpkg/blob/master/docs/about/faq.md#why-not-nuget
答
我建议看看Nuget。它正在迅速成为这类事情的微软标准。很多人认为Nuget只适用于.NET,但它对于VC++来说也很好。我在公司中成功地设置了Nuget服务器来提供头文件和编译库,并且我已经获得了所有的自动化构建系统来自动创建这些东西。我不打算详细说明这里的所有细节,但它基本上涉及到执行构建,创建一个MSBuild XML片段以自动设置预编译器和链接选项,然后打包所有这些位(标头,库,XML )以正确的方式。当正确完成时,在新项目中使用现有软件包只需两个步骤 - 建立Nuget参考,然后将#includes添加到代码中。您甚至不需要服务器 - 您可以直接从您自己的控件的目录中获取它们。
https://docs.microsoft.com/en-us/nuget/create-packages/native-packages