Abc (Adapt,Build,Certify ... Deploy,Export) // application development software

A multi-project JIT generator for: Jake, GNU Make, Ninja Build, CMake.

Benefits of Abc

Gain Time

  • Gain time - by not spending hours on repetitive manual tasks.
  • Save time - with parallel builds and automated tests.

Focus on what is important

  • Automate the development process from code to delivery.
  • Now you can focus on features and functionality.
  • Trust the Reliability of your project

  • Objects are rebuilt when necessary and combined in the correct order.
  • Delivery stage is only possible when all previous steps have been completed.
  • Uniqueness of Abc

    • Provides script injection points in the build, deploy, and even export stages.
    • Adaptable to your build-chain tools and CI/CD software.

    Who can use Abc?

    This application is designed for developers, integrators and testers.

    Over time, the functionality has been expanded to allow for automatic reporting.

    Using the right scripts can help QA engineers identify errors.

    By post-processing the output artifacts, summary reports can be created for the project leaders.

    Senior Developers: Make the initial setup for projects and distribute to the team, knowing that:

    • Projects will be built in the correct order.
    • A successful build means that the selected tests have passed.
    • Code convention formatting and detection rules can be injected before the compilation step.
    • By the time of commit/check-in, the code already looks good, because the developers have already fixed the inconsistencies.

    New-Entry Developers: You can use preconfigured projects directly.

    • Learn as you go.
    • Learn and apply soon the code conventions rules, as highlighted in the compilation result.
    • Build on good examples.

    When to use Abc?

    A fair amount of knowledge is needed about the compile-link-process.

    Developers spend time adjusting compilation flags, project dependencies, and inter-project dependencies.

    Good IDEs help automate these tasks to an extent.

    Common use cases:

    • Creating executables and libraries in a consistent way, testing, deploying ...
    • The main project contains several (lots of) subprojects, and the dependencies between projects must be adjusted each time.
    • All or some projects require in-place regression tests. Tests are optional, but recommended and supported.

    Additional use cases:

    • This tool can be used for various other purposes. e.g. generate documentation, generate parts of websites, etc.

    Abc Feature List

    • Control the detailed aspects of the development process.
      • Automate developer tasks in a reliable way.
      • Saves development time.
      • Assure the right sources are (re)compiled, verified, uploaded (to target), deployed.
      • Deployment and Export are fully configurable with user scripts.
      • A build level starts only after all previous levels have been successful (via return code).
      • Unit / Integration Tests can be glued to each sub-project.
      • Automatically deploy, after all tests have been passed.
      • Event scripts: before, during and after each build level.
      • Coverage and Profiler measurements can be added for each project.
    • Easy to learn.
      • The tool follows classic, proven concepts.
      • Usual build-targets are used: all, install, clean, distclean.
      • Configuration files use a bash-like syntax.
      • Uses a global configuration as well as (optional) project-specific attributes.
      • Usually, the local project configuration can be (almost) empty.
      • A senior can choose the sensible build options and the newcomers can easily adapt.
    • Simple and fast management of complex projects.
      • Handle sub-projects and dependencies between them.
      • Clear multi-project structure.
      • It adapts dynamically to changes in the project structure, such as adding, renaming and deleting files / directories / projects.
      • Projects may have independent build settings and target architectures.
      • Every sub-project can have its own particularities. Only differences from global configuration need to be specified.
      • Allow multi-platform builds.
    • Uses the user-defined build-toolset (compilers, linker, generators, etc.)
      • The tool is language-independent.
      • The basic (compile, link) steps may be extended for automatic testing and deployment.
      • The developer can choose a specific compiler/linker and specific build options.
      • Examples are for C+-, C++ and C. However, Asm and other languages can be used.
    • Build and deploy as quickly as possible without sacrificing quality.
      • Parallel builds are active by default.

    • You can find more benefits for yourself by reading the sample configuration files and trying out your projects.
    • The main configuration directory given as example contain comments for the control variables and active features.
    • The sample multi-project archive may give an idea of capabilities.
    • Real projects can have more or less sub-projects and may have a more complex structure than the example given.

    Image and Video Gallery

    build with Abc build with Abc (colored output)

    Abc video demo with jake Abc video demo with jake

    Abc video demo with make Abc video demo with make

    Abc video demo with ninja Abc video demo with ninja

    Abc video demo with cmake Abc video demo with cmake

    See also:

    Abc How-To

    Abc support for IDEs