build - 哪种构建系统对跨平台驱动程序、库和 GUI 构建的支持最好?

标签 build makefile multiplatform

对于超过一百万行的多平台项目,构建系统的最佳选择是什么,该项目为所有主流操作系统生成驱动程序、库、命令行工具、GUI 和操作系统安装包,同时使用 GNU 和微软工具链?

我们的源代码主要是 C,有 Python、C# 和 GNU makefile,还有一点 C++ 和 bash。它主要驻留在一个存储库中,但我们将源代码推送给各种第三方,这些第三方都有自己的源代码存储库。保持快速构建也有一些兴趣,这可能涉及拆分项目。

目前我们混合使用 GNU make、bash、python 和微软的 DDKBUILD。主要问题是我们在 make 之上维护了一组复杂的脚本,并且更愿意使用第三方(最好是开源)工具,并且 cygwin 在 Windows 上并没有被证明是健壮的(例如 fork 并不总是可能的) ),并且我们当前的构建系统不会构建或安装工具链,因此容易受到工具链版本更改的影响。

最佳答案

我投票支持 CMake,它是一个真正从头开始重写 KDE4 构建系统的元构建工具——并使 KDE4 现在成为一个跨平台的桌面,甚至可以在 WindowsCE 上运行!

CMake 是将 KDE4 移植到地球上任何操作系统的载体——通过为大约 40 个具有相关工具链的操作系统生成 Makefile(或 Windows 中的 vcprojs)!

关于build - 哪种构建系统对跨平台驱动程序、库和 GUI 构建的支持最好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/358849/

相关文章:

go - Makefile执行: permission denied

java - 实现 Servlet,用于识别请求者并发送浏览器的动态 html 或仅发送移动/桌面应用程序的信息

ant - 始终独立于目标执行 Ant 操作

azure - 使用独立框架时,为 dot net core 3.1 设置 CI 构建配置失败

java - 我们如何使用 Maven 发布 REST Web 服务的客户端 jar?连同 War 文件

c - 为什么我的 C 编译器找不到一些头文件?

android - Android NDK:断言失败:LOCAL_MAKEFILE未定义

cross-platform - 跨平台和多平台有什么区别?

perl - 为什么 Perl 的 PAR 找不到 Socket.pm 的可加载对象?

jenkins - 远程触发构建后检查 Jenkins 作业状态