`
johnson.lee
  • 浏览: 52404 次
  • 性别: 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、图片等...

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

    本文详细探讨了开源大数据ETL(Extract-Transform-Load)工具中模块化组件构建的技术方法,并以Kettle这个开源ETL软件作为案例,分析了其模块化组件构建的实践应用。Kettle是Pentaho数据集成(PDI)系统的一个重要...

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

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

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

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

    模块化的nf-HiPAC

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

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

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

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

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

    微信小程序-微信小程序框架-模块化组件开发工具

    微信小程序模块化组件开发“框架” 更新日志:Changelog 简介 使小程序开发可以采用模块化的开发方式。没有任何构建相关的骨架或者约束。在运行阶段自动通过getter/setter,将你的“模块化组件”的数据和方法的...

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

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

    digo是一个轻量实用的流程化自动构建工具

    **digo:轻量级流程化自动构建工具详解** 在现代JavaScript开发中,构建工具扮演着至关重要的角色,它们能够自动化处理项目的各种预处理任务,提高开发效率并优化代码。"digo"就是这样一款轻量且实用的流程化自动...

    maven多模块项目工程-已搭建好

    8. **持续集成/持续部署(CI/CD)**:多模块项目通常配合Jenkins、GitLab CI/CD等工具实现自动化构建和部署,确保每次代码提交后都能快速验证代码的正确性和部署到测试或生产环境。 总之,"maven多模块项目工程-已...

    java 模块化 开发

    模块化是指将项目划分为多个模块,以便改进构建过程,但是在运行时却很少考虑划分模块的问题。在 Java 开发中,模块化可以分为静态模块化(static modularity)和动态模块化(dynamic modularity)。 一、静态模块...

    dotnet-Psake基于NET的构建自动化工具采用PowerShell开发

    **Psake:基于.NET的构建自动化工具** Psake是一款强大的构建自动化工具,它利用PowerShell脚本语言进行构建过程的管理。在.NET开发环境中,构建自动化对于提高开发效率、确保代码质量和简化部署流程至关重要。...

    Node.js本机插件构建工具-Node.js开发

    node-gyp-Node.js本机插件构建工具node-gyp是用Node.js编写的跨平台命令行工具,用于为Node.js编译本机插件模块。 它包含gyp项目的一个分叉,以前由node-gyp使用-Node.js本机插件构建工具node-gyp是用Node.js编写的...

    易模块反编译工具-能把EC模块反编辑源代码

    标题提到的"易模块反编译工具"显然是一款专用于对EC(可能是Electron Component或者某种特定的软件模块)模块进行反编译的工具。这种工具在软件开发、安全分析和代码学习等领域有着广泛的应用。 首先,我们来了解...

    基于模块化的电子信息工程专业实践教学体系构建与实践.pdf

    【电子信息工程专业实践教学体系构建】模块化教学体系在电子信息工程专业的实践教学中扮演着重要角色,旨在培养具有高素质、强工程意识和实践能力的应用型本科人才。这种教学模式强调以能力为导向,以模块化课程为...

    使用Dubbo进行规模服务化前的工程结构优化--源码.rar

    【标题】:“使用Dubbo进行规模服务化前的工程结构优化--源码.rar”涉及到的是在大型项目中采用Dubbo框架进行服务化改造的过程。这个压缩包中的源码提供了从传统非服务化工程向微服务架构转型的具体实现,旨在优化...

    SCons:软件构建工具-开源

    SCons是一种软件构建工具,它是我们大家都知道并喜欢的经典“ Make”构建工具的替代品。 SCons是作为Python脚本和一组模块实现的,而SCons“配置文件”实际上是作为Python脚本执行的。 这为SCons提供了许多其他软件...

    教育科研-学习工具-一种PVC建筑墙体主体模块.zip

    描述中的"一种PVC建筑墙体主体模块"指的是利用PVC材料设计的可组装式墙体结构,这种结构可能采用了模块化设计理念,允许快速拼装和拆卸,便于教学演示和实际工程中的灵活运用。在教育科研中,这样的模块化设计可以...

    maven 模块化项目demo

    Maven,一个流行的Java构建工具,提供了强大的支持来管理模块化项目。本“maven 模块化项目demo”旨在展示如何使用Maven构建和管理模块化的Java应用。 Maven的核心概念是“项目对象模型”(Project Object Model,...

Global site tag (gtag.js) - Google Analytics