Build Commands

When starting out, with C3 it's natural to use run to try things out. For larger projects, the built-in build system is instead recommended.

By default the compiler is compiling stand-alone files to output an executable binary.

c3c <file1> <file2> <file3>


The run command works same as compilation, but also immediately runs the resulting executable.

c3c run <file1> <file2> <file3>

Common additional parameters

Additional parameters: - --lib <path> add a library to search. - --output <path> override the output directory. - --path <path> execute as if standing at


c3c init <project_name> [optional path].

Create a new project structure in the current directory.

Use the --template to select a template. The following are built in:

  • default - the default template, produces an executable.
  • lib - template for producing a library.
  • staticlib - template for producing a static library.

It is also possible to give the path to a custom template.

Additional parameters: - --template <path> indicate an alternative template to use.

c3c init hello_world will create the following structure:

$ tree .
└── hello_world
    ├── LICENSE
    ├── build
    ├── docs
    │   ├──
    │   └── src
    │       └── index.html
    ├── lib
    ├── project.c3p
    ├── resources
    ├── src
    │   └── hello_world
    │       └── main.c3
    └── test
        └── hello_world


build [target]

Build the project in the current path. It doesn't matter where in the project structure you are.

The built in templates define two targets: debug (which is the default) and release.




build-run [target]

Build the target (if needed) and run the executable.


clean-run [target]

Clean, build and run the target.


dist [target]

Clean, build and package the target.


docs [target]

Rebuilds the documentation.


bench [target]

Runs benchmarks on a target.