Skip to content
Ruby/Rake-based build and test system for C projects
Ruby Other
Find file
New pull request
Latest commit 731e192 @mvandervoord mvandervoord Merge pull request #51 from benwainwright/patch-1
Fixed XML inside <FailedTests>

Ceedling - Build/test system for C based on Ruby/Rake

Ceedling Build Status

Ceedling is a build system for C projects that is something of an extension around Ruby’s Rake (make-ish) build system. Ceedling also makes TDD (Test-Driven Development) in C a breeze by integrating CMock, Unity, and CException -- three other awesome open-source projects you can’t live without if you're creating awesomeness in the C language. Ceedling is also extensible with a handy plugin mechanism.

Usage Documentation

Documentation and license info exists in the repo in docs/

Getting Started (Developers)

> git clone --recursive
> cd ceedling
> bundle install # Ensures you have all RubyGems needed
> bundle execute rake # Run all CMock library tests

Using Ceedling inside of a project

Ceedling can deploy all of its guts into a folder. This allows it to be used without having to worry about external dependencies.

ceedling new [your new project name]

Using Ceedling outside of a project as a gem

Ceedling can also be used as a gem. The following Rakefile is the bare minimum required in order to use Ceedling this way:

require 'ceedling'

If you want to load a Ceedling project YAML file other than the default project.yml (i.e. ./my_config.yml), you can do:

Ceedling.load_project(config: './my_config.yml')

Additionally, a project.yml is required. Here is one to get you started:

  :use_exceptions: FALSE
  :use_test_preprocessor: TRUE
  :use_deep_dependencies: TRUE
  :build_root: build
#  :release_build: TRUE
  :test_file_prefix: test_

#  :output: MyApp.out
#  :use_assembly: FALSE


  :executable: .out

    - +:test/**
    - -:test/support
    - src/**
    - test/support

  # in order to add common defines:
  #  1) remove the trailing [] from the :common: section
  #  2) add entries to the :common: section (e.g. :test: has TEST defined)
  :commmon: &common_defines []
    - *common_defines
    - TEST
    - *common_defines
    - TEST

  :when_no_prototypes: :warn
  :enforce_strict_ordering: TRUE
    - :ignore
    uint8:    HEX8
    uint16:   HEX16
    uint32:   UINT32
    int8:     INT8
    bool:     UINT8

# Ceedling defaults to using gcc for compiling, linking, etc.
# As [:tools] is blank, gcc will be used (so long as it's in your system path)
# See documentation to configure a given toolchain for use

    # This is required to use builtin ceedling plugins
    - "#{Ceedling.load_path}"
    # Uncomment this and create the directory in order to use your own
    # custom ceedling plugins
    # - ceedling_plugins
    # These plugins ship with Ceedling.
    - stdout_pretty_tests_report
    # - stdout_ide_tests_report # IDE parseable output
    # - teamcity_tests_report # TeamCity CI output (only enabled in TeamCity builds)
    - module_generator # Adds tasks for creating code module files

Finally, you'll need to create something like the following directory structure. This one matches the project.yml defined above:

Something went wrong with that request. Please try again.