模块化工程构建工具 - XBuild

Xbuild is project auto build tool, it's just a simple wrapper of GNUMake. The home page is [url]https://sourceforge.net/projects/xbuild/[/url]


1.How to install
----------------
tar -xzvf xbuild-<version>.tar.gz -C /usr/local/sbin

2.Syntax specificatio of build.mk file
--------------------------------------

- Overview
An build.mk file is written to describe your sources to the build system. More
specifically:

o The file is really a tiny GNU Makefile fragment that will be parsed one or
more times by the build system. As such, you should try to minimize the
variables you declare there and do not assume that anything is not defined
during parsing.

o The file syntax is designed to allow you to group your sources into
'modules'. A module is one of the following:

* a static library
* a shared library
* a executable

You can define one or more modules in each build.mk file, and you can use
the same source file in several modules.

o The build system handles many details for you. For example, you don't need
to list header files or explicit dependencies between generated files in
your build.mk. The build system will compute these automatically for you.

This also means that, when updating to newer releases of the XBuild, you
should be able to benefit from new toolchain/platform support without having
to touch your build.mk files.

- Simple example:
Before describing the syntax in details, let's consider the simple "hello"
example, assume the structure of "hello" project is following:

hello
├─include
│ └─hello.h
├─src
│ ├─build.mk
│ └─hello.c
└─build.mk

Here, we can see:

o The 'src' directory containing the c source for the sample project.
o The 'include' directory containing the c header file for the sample project.
o The 'hello/build.mk' file that describles the sub diretory to build system.
Its content is:

---------- cut here ----------
include $(all-subdir-makefiles)
---------- cut here ----------
o The 'src/build.mk' file that describles the shared library to build system.
Its content is:

---------- cut here ----------
$(call prepare-build)

MODULE := hello
INCLUDES := ../include
CFLAGS := -O3 -Wall -ggdb -D_DEBUG
CPPFLAGS :=
CXXFLAGS := $(CPPFLAGS)
LDFLAGS := -L/usr/local/lib -L/usr/lib
LDLIBS :=
SHARED_LIBS :=
STATIC_LIBS :=
SOURCES := hello.c

$(call build-shared-library)
---------- cut here ----------

- Xbuild provided evironment variables

o ARCH
The architecture of the CPU

o XBUILD_PROJECT
The absolute path of project

- Xbuild provided variables

o MODULE
This variable is required, it's describled the module name.

o INCLUDES
A set of C/C++ header file include directory, for example:

INCLUDES := ../include
INCLUDES += ../../include

o CFLAGS
A set of compile flags for .c source file, for example:

CFLAGS := -O3 -Wall -ggdb -D_DEBUG

o CPPFLAGS
A set of compile flags for .cpp source file, for example:

CPPFLAGS := -O3 -Wall -ggdb -D_DEBUG -std=gnu++0x

o CXXFLAGS
A set of compile flags for .cxx and .cc source file, for example:

CXXFLAGS := -O3 -Wall -ggdb -D_DEBUG -std++

o LDFLAGS
A set of link flags for build shared library, static library orcutable,
for example:

LDFLAGS := -L/usr/local/lib -L/usr/lib -L$(call pwd)/../lib

NOTE: If the path is relative, should use the function $(call pwd) to locate
current directory.

o LDLIBS
A set of external library to link, for example:

LDLIBS := -lrt -lpthr

o SHARED_LIBS
A set of shared library module name that dependencied by current module,
for example:

SHARED_LIBS := module-foo module-bar

If the SHARED_LIBS is defined, the module linked after all of dependency
module linked success.

o STATIC_LIBS
A set of static library module name that dependencied by current module,
it's the same of SHARED_LIBS.

o SOURCES
A set of source file to compile.

- Xbuild provided functions & macros

o add-suffix
o build-shared-library
o build-static-library
o build-executable
o pwd
o all-subdir-makefiles

About the details, please see '$Xbuild/core/definitions.mk'

4.Build project
---------------
Usage of xbuild command:

cd <project-directory>
xbuild all

or

xbuild r[ebuild]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值