七大顶尖 C++ 开源构建系统

3 篇文章 0 订阅

目录

1. Make

2.现代 CMake

3. Ninja

4. SCons

5. Meson

6. MSBuild

7. Waf


1. Make

Make 无处不在。但这也不难理解,Make 创建于1977 年,在计算机行业的影响深远。Make 广泛适用于所有类 Unix 系统、Macintosh 系统,以及 Windows 的所有版本中,可通过 Cygwin 或本地 nmake 执行。Make 使用简单的文本文件 makefiles 来指导构建。makefile 包含如下规则:

shownottell: show.c tell.c    gcc –o shownottell show.c tell.c

规则包含 Target(目标)和  Recipe(命令)。Target 是文件名,在上面的例子中是 shownottell。分号分隔的是 Prerequisites(依赖文件)。Recipe 行由 shell 命令组成,需要以 Tab  键开始。执行这些shell 命令更新目标,我们要做两件事:

  • Target 是否需要更新?即 Prerequisites 是否需要更改;
  • 如果是,如何更新 Target ?即是否需要运行 Recipe。

这就是 Make 的规则。对于简单的项目,Make 构建系统易于实现和维护。随着项目的发展,makefile 会变得非常复杂。尽管年代久远,Make 仍然是构建软件最常用的工具。

2.现代 CMake

现代 CMake 是 Make 的真正继任者。在之前的一系列文章中,我一直在谈论CMake。相关链接如下:

为什么说现代 CMake 是 Make 的继承者?事实胜于雄辩,我把悬念留到CMake 的博客中,大家可以自行研究。但是,我相信,许多新的开源 C++ 项目要么已经在使用,要么正准备使用 CMake 了。点击链接了解 CMake 开源项目。

3. Ninja

一个产品的存在必须有一个独特的卖点(USP)。Ninja 的独特卖点(USP)是对速度的执著。本着“事实为先”的精神,我们先看图:


图片来源

Ninja 是一个小型的开源构建系统,其输入文件由更高级别的构建系统(比如CMake)生成,Ninja 的设计专注速度,高速运行构建。在 Visual Studio 2019 中,可以使用 CMake 和 Ninja 直接构建 Linux 项目。点击链接了解 Ninja 开源项目。

4. SCons

在著作《软件构建系统:原则和经验》中,Peter Smith 深入观察了 SCons,引用他的原话:

“如果你正在编写一个新的 C/C++ 软件构建系统,建议首选 SCons 或CMake。”

这句话的原文是与 GNU Make(了解更多 GNU Make 的信息)进行比较。但是可以清楚地看到,SCons 是 CMake 强有力的竞争对手。SCons 作为一个升级的跨平台开源构建,足以替代经典的 Make。SCons 的配置文件是用 Python 编写的,Python 也是 SCons 的独特卖点(USP),主张使用真正的编程语言来解决构建问题。当前版本的 SCons 需要 Python 版本 3.5 才能运行。点击链接了解 SCons 开源项目。

5. Meson

科技不断发展——我们正在进入粒子物理学时代。? 玩笑归玩笑,Meson 是一个开源的构建系统,速度快,易使用。正如大自然无法忍受真空环境一样,Meson 也无法忍受:

  • 开发人员在编写、调试构建定义上浪费太多时间;
  • 为构建系统开启编译浪费太多时间

Meson 没有使用图灵完备语言(Turing Complete language)编写构架定义。相反,Meson 采用了一种特定语言(DSL),便于使用、非图灵完备,并将成为其独特卖点。Meson 支持多种语言,包括 C、C++ 和 RIST,能跨平台进行开源构建。Meson 的默认构建生成器为 Ninja。点击链接了解 Meson 开源项目。

6. MSBuild

Microsoft Build Engine(MSBuild)是用于生成应用程序的平台。不过,这篇博客不是关于七大开源 C++ 构建系统的吗?MSBuild 开源吗?话不多说,先看图:

是的,在 2015 年底,微软决定对 MSBuild 开源软件开发流程。其第一个版本于 2017 年 3 月 7 日发布,并与 Visual Studio 2017 一起打包发行。MSBuild 现在是一个真正的跨平台应用程序,可在支持 .NET Core 的类 Unix 系统上运行。点击链接了解 MSBuild 开源项目。

相关阅读:什么是 MSBuild

7. Waf

尽管可能很多人都没有听说过 Waf 构建工具,但 Incredibuild 早已抢先集成。Waf 是 Python 开源构建工具,支持多种编程语言,如 C、C++、C 语言、Java 甚至 Fortran。Waf 是一个用于配置、编译和安装应用程序的框架。我们将展示如何使用 Waf。我利用源代码构建了 Waf,因此我们先来看看其版本:

这里展示的是,我如何构建 Waf  中的 C++  演示项目:

这是我的 wscript 文件, 用于协调构建:

如果你已熟悉 Python,那 Waf 上手也会很快。 点击链接了解 Waf。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: C开源网络验证系统是一种用于网络安全的开放源代码软件,其主要目的是保护系统免受未经授权的访问和攻击。该系统包含了许多安全功能,比如多因素身份验证、加密通信、访问控制等,可以为企业和组织提供多层次的安全保护。 在C开源网络验证系统中,认证服务器可以根据不同的安全需求配置不同的验证策略,比如普通密码认证、证书认证、单一因素或多因素身份验证等。同时,认证服务器还可以实现用户身份的单点登录,让用户在一个系统中实现多点访问,提高了系统的效率和安全性。 此外,该系统还支持IP地址白名单和黑名单的管理,可以限制不信任的IP地址的访问,并保证系统只对合法的用户进行服务。并且该系统的源代码开放,用户可以自由进行二次开发和优化,提高了系统的灵活性和可扩展性。 总的来说,C开源网络验证系统是一种功能强大、安全可靠的网络安全软件,可以为企业和组织提供高效、全面的安全保护。 ### 回答2: 开源网络验证系统是一种可自由获取和使用的网络身份验证系统,它被广泛应用于企业网络、电子商务、公共服务等领域。这种系统使用开源技术和协议,具有高度可定制性、高可靠性、高安全性等特点,能够有效地保护用户的网络安全和隐私。 开源网络验证系统通常包括身份认证、授权、会话管理等功能模块,它们能够与各种应用系统进行集成,为后端系统提供安全的接口和认证服务。这种系统采用标准化的协议和算法,如SSO、OAuth、OpenID Connect等,能够满足多种场景下的身份认证需求。 开源网络验证系统的技术实现包括LAMP、Java、.NET等多种技术平台,其中最常用的是LAMP,即Linux+Apache+MySQL+PHP。这种技术平台具有开放性、可扩展性、适用性等优势,能够满足不同用户的需求。 总之,开源网络验证系统是一种优秀的网络身份验证系统,它能够为企业和用户提供便捷、安全、高效的身份认证服务,是网络安全领域的一项重要技术。 ### 回答3: C 开源网络验证系统(C Open Network Authentication System,简称 C-on)是一个基于C语言开发的网络认证系统,它提供了一个开放源代码的平台,可以在任何系统上使用。C-on可以被看作是一种中间件,一套网络身份验证和访问控制方案。它为管理用户帐户提供灵活且易于配置的解决方案,并提供了多种身份验证方法,如常见的RADIUS、LDAP等。 C-on在安全性上也有很好的表现,比如支持SSL / TSL模式的安全传输,以及对固定IP设备的 MAC 认证、IP 地址池和静态 IP 的支持等。C-on还提供了一种灵活的数据提供方式,能够通过Web API、脚本等方式随意扩展数据源。这为开发者提供了更多的自由度,使C-on可以被集成到更多的应用中。 总体来说,C-on平台的主要目的是以更低的成本来满足企业或组织的安全认证需求,而且C-on的开源方案最大程度地增加了系统的灵活性和定制性,与商业化的网络身份验证方案相比,更加灵活自由,并且更加透明,不需要任何用户许可费用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值