nixyx —— 一个小巧的项目工程/编译文件生成器(构建系统?)

/ 0评 / 0

Published by orzz.org(). (http://orzz.org/nixyx/)

恩。。nixyx确实算不上是一个构建系统。

所谓构建系统,比如GNU的Autotools,那是一套很完整的构建体系,包括了程序的配置,编译和安装三大部分。

类似的软件还有:google的gyp腾讯的Blade等。
它们最大的好处在于,可以不考虑平台之间的差别,使用统一的配置文件和命令,做到跨平台部署。

它们往往还支持很多很高端的功能,比如集成自动测试,代码检查(Blade)。。

可是我暂时不需要这些复杂的功能。
我正在编写的nixy库是一个跨平台/编译器的C++库,它非常小,没必要使用大型的(或者说有学习成本和使用成本的)构建系统。目前的所谓构建,也只是编译一下测试代码。
而跨平台的编译确实又是一个很搞人的事情,windows下最起码得支持各种Visual C++版本,还有mingw也得考虑进来;linux下相对单纯些,写一个makefile基本一劳永逸了。。但arm下的linux,makefile又会有些区别。
这么多的项目工程文件(包括各种不同的makefile),随着项目的长大管理复杂度直线上升=.=

我的需求:
一个可以根据配置文件(js,简单易用,基本无学习成本)生成各种平台/编译器下的项目工程/编译文件的工具。

所以就花了两天折腾出来了一个很小的“构建系统”。。其实不算吧,应该叫“项目工程/编译文件生成器”才对。

1. nixyx解决的问题

恩,就这些了,我暂时只需要它帮我生成项目文件。

2. nixyx的使用方法

先来看一段简单的js脚本,文件名为build.js,放在nixyx目录下即可:

上面这个脚本就是目前我构建时使用的脚本。

Solution对象 是整个工程对象;
Projects对象 是工程下的项目集合;
$(Configuration) 会根据编译的选择自动替换为debug或release;
$(CC) 表示当前编译器的名字,在nixyx运行时会列出当前选择的编译器。

脚本功能基本就是上面这些,当运行nixyx的时候,在控制台界面上会显示出如下文字:

Script File: build.js
Target Plat: win
Target CC: vc11

OK to start it ? (y/n/f/p/c)

y/n/f/p/c 的含义是:
y:yes,开始生成相关平台的工程文件
n:no,以空格为分隔,一次性输入所有可选配置(配置脚本的完整文件路径 操作系统 编译器)
f:file,键入f之后nixyx会提示重新输入文件的完整路径(当然,支持相对路径的文件)
p:platform,即目标平台。目前支持win(包括win32/win64/wince)和linux
c:compiler,即编译器。目前支持的有:vc8-11(即vs2005-2012)、gcc

以上,功能很简单。

3. nixyx下载和编译

exe:http://nixy.googlecode.com/svn/trunk/build/https://sourceforge.net/projects/foobar-dummy/files/nixyx/
如果想要编译的话,代码在这里:http://nixy.googlecode.com/svn/trunk/nixyx/

因为目前nixyx是使用Qt 5.1.1编写的,所以编译的话需要先安装Qt。。
这个稍微有点麻烦,不过Qt本身就是跨平台的,保证了nixyx可以在多个平台上编译。

Published by orzz.org(). (http://orzz.org/nixyx/)

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据