DartleC
A Dartle extension to compile C projects.
It compiles C code into object files incrementally (compileC task),
then generates a binary executable from the object files (linkC task).
DartleC can be used as a command-line utility, dcc, or as a Dartle library (to integrate with other Dartle-based tools).
Using the executable dcc
DartleC can be used as a command-line utility to compile C code.
To use it in that way, activate it with pub:
dart pub global activate dartle_c
After this, running dcc will compile all C files found in a src directory to the out dir,
generating a binary executable named a.out.
Tasks
compileC- Compiles C source code into object files.linkC- Links object files, creating a binary executable.
linkC depends on compileC and is the default task. Hence, simply running dcc
will run both tasks as necessary.
To only compile the C source files without generating an executable,
and using a specific cstd version:
dcc compileC :-cstd=c99
The
:before the argument to thecompileCtask is necessary because otherwise Dartle uses the argument instead of passing it on to the task.
Useful options:
# show usage and available options
dcc -h
# show all tasks
dcc -s
# enable verbose (`debug`) output
dcc -l debug
Configuring dcc
To configure dcc, create a dcc.yaml file at the project root directory with contents as shown
below (all properties are optional):
compiler: gcc
compiler-args: ["-std=c2x", "-Wall", "-Werror", "-ansi", "-pedantic"]
linker-args: ["-shared"]
objects-dir: out
source-dirs: [src]
# instead of source-dirs, you can also list files explicitly:
# source-files: [foo.c, bar.c]
output: my-binary
The
compileris chosen depending on the platform if not provided. You can also set theCCenvironment variable to choose one.
Task options are added to the compiler-args provided in the YAML configuration file.
Using DartleC as a library.
To include DartleC in your existing Dartle build, or to write your own build system based on
DartleC, add it as a dependency of your Dart project:
dart pub add dartle_c
Check this project's example for how to use its API.
Libraries
- dartle_c
- A Dartle extension to compile C code.