`
johnson.lee
  • 浏览: 52314 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

模块化工程构建工具 - XBuild

阅读更多
Xbuild is project auto build tool, it's just a simple wrapper of GNUMake. The home page is https://sourceforge.net/projects/xbuild/


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]
   
   
分享到:
评论

相关推荐

    vue-multipage vue 模块化开发打包

    Vue-multipage 就是针对Vue.js 应用的多页面模块化构建工具。它结合了Webpack等现代前端构建工具,使得在Vue.js应用中实现多页面开发变得更为简单。 Webpack 是一个模块打包器,它能够将JavaScript、CSS、图片等...

    前端构建尝试1-构建工具源代码

    `Browserify` 是一个用于解决在浏览器中使用 CommonJS 规范的模块化开发问题的工具。它允许开发者将Node.js风格的`require()`语法应用于前端代码,使得代码可以按照模块化的方式组织,便于复用和管理。`Browserify`...

    开源大数据ETL工具的模块化组件构建技术研究.zip

    本研究主要探讨的是如何利用模块化组件构建开源大数据ETL工具,以提升数据处理的效率和可扩展性。 一、模块化设计的优势 模块化组件构建技术的核心思想是将复杂系统拆分为多个独立的、可重用的模块,每个模块专注于...

    Web前端模块化组件seajs-3.0.0版

    通过别名等配置,配合构建工具,可以比较轻松地实现模块的版本管理。 提高可维护性。模块化可以让每个文件的职责单一,非常有利于代码的维护。Sea.js 还提供了 nocache、debug 等插件,拥有在线调试等功能,能比较...

    fedao学而思在线前端工程构建工具

    【标签】:“JavaScript开发-构建工具”表明这套构建工具的核心是JavaScript,它主要服务于JavaScript开发者,通过自动化工具帮助开发者解决项目构建中的各种问题,例如代码转换、优化、打包等,使开发者可以专注于...

    JavaScript前端开发模块化教程_源代码.rar

    3. **模块化工具与框架** - **Webpack**:强大的模块打包工具,可以处理各种静态资源,并提供模块热替换、代码分割等功能。 - **Rollup**:轻量级的模块打包工具,专注于优化JavaScript库的构建。 - **Browserify...

    Magisk模块:Move_Certificates-v1.9

    总的来说,Move_Certificates-v1.9模块通过自动化证书的导入过程,提高了用户在Android设备上管理安全连接的效率。用户只需在Magisk环境中安装此模块并重启设备,就可以享受更加便捷的证书管理体验。然而,值得注意...

    软件工程中的模块化与组件化设计.pptx

    ### 软件工程中的模块化与组件化设计 #### 第一章:软件工程概述 - **定义**:软件工程是一门系统性地研究软件开发、运行与维护的工程学科,旨在采用规范化的管理和技术手段来提高软件产品的质量和生产效率。 - **...

    front-end-handbook-2017(前端开发指南)

    - 数据可视化工具 - 图形工具(SVG、Canvas、WebGL) - 前端数据存储工具 - HTTP/网络工具 - 代码编辑工具 - HTML/CSS/JavaScript工具 - 静态网页构建工具 - 无障碍访问工具 - 渐进式Web应用工具 - 脚手架...

    模块化简易构建系统:Easy Build System - Modular Building System 6.8

    Easy Build System 是一个简单且模块化的构建解决方案,它使开发者能够轻松地进行项目开发。这个系统允许快速且容易地为项目添加高级构建特性。 ​ 用于 Unity 的高级模块化构建系统。轻松、快速、可缩放、强大、...

    springboot模块化框架

    使用Jenkins、GitLab CI/CD等工具,自动化构建、测试和部署各个模块,确保整个流程的高效和稳定。 通过以上对SpringBoot模块化框架的分析,我们可以看出其在提高开发效率、增强代码可维护性和扩展性方面的优势。在...

    模块化的nf-HiPAC

    原版的nf-hipac需要为内核打patch,且只支持较低版本的内核,构建起来相对比较...模块化后的nf-hipac可以直接作为内核可加载模块编译,且适配了高版本的Linux内核。为了移植工作简化,去掉了和iptables模块的联动支持!

    QT模块化编程 pro pri 子工程 使用

    QT模块化编程是一种高效组织大型项目的方式,它允许我们将复杂的应用程序分解为多个独立的、可重用的模块或子工程。在QT中,我们通常使用`.pro`和`.pri`文件来管理这些模块。`.pro`文件是QT项目的主配置文件,用于...

    一种基于逻辑的Java模块依赖图构建工具.pdf

    然而,Java模块依赖图的构建工具并不普遍,这种稀缺性在一定程度上限制了基于MDG图的软件模块聚类算法的广泛应用。为了应对这一挑战,研究人员提出了基于逻辑的Java模块依赖图构建工具TL4JMDG(the tool logic-based...

    Java9模块化开发核心原则与实践

    3. **构建模块化应用**:使用Jigsaw或Maven/Gradle插件进行模块化构建。 4. **测试和调试**:确保模块间通信正常,无冲突。 七、模块化与JAR和应用服务器 模块化不仅影响到标准的Java应用,也改变了JAR文件的处理...

    smm分模块构建工程

    在这个项目中,开发者采用了Maven作为构建工具,通过模块化的方式对系统进行拆分,以提升代码的复用性和可维护性。下面我们将详细探讨这些关键知识点。 1. **Maven**:Maven是一个项目管理和综合工具,它帮助开发者...

    基于Vue的模块化组件化工程化编码应用例子

    总结,基于Vue的模块化、组件化和工程化编码应用例子展示了如何利用Vue.js构建高效、可维护的前端应用。通过模块化组织代码,组件化构建UI,以及Vue CLI带来的工程化实践,开发者能够更好地应对复杂项目的需求。

    QT模块化编程 pri子工程创建以及使用 pro工程

    在QT中,我们可以利用pri子工程来实现模块化的概念。本文将详细介绍如何在QT环境中创建和使用pri子工程,以及与pro工程的配合。 首先,让我们理解一下 pri 文件和 pro 文件。`pro`文件是QT项目的基本配置文件,它...

    张忻正丨B站-iOS工程模块化实践与优化

    iOS工程模块化实践是指将iOS应用软件的开发过程按照模块化的方法来组织,每个模块作为独立的开发单元来构建、测试和维护。优化则是指在此基础上,通过各种技术手段提升模块的性能、质量和开发效率。 描述“B站-iOS...

Global site tag (gtag.js) - Google Analytics