diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..fea7c11 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# Introduction + +Have you ever wondered, if you want to compile a C++ program, why you always +need to learn another language to make it build properly with dependency +tracking and so on. + +Many good build-systems exists which all have their strengths and weeknesses +autotools, cmake, meson to name a few. + +`cppbuild` tries to make it possible to use all the cool features of the above +in a tool only using C++ (through the compiler). + +## Getting Started: 3 Simple Steps + +Step 1: Create a build configuration, in C++ + +A really simple example ('hello_config.cc'): +```c++ +#include "libcppbuild.h" + +namespace +{ +BuildConfigurations helloConfigs() +{ + return + { + { + .target = "hello", + .sources = { + "hello.cc", + }, + .cxxflags = { + "-Wall", + "-std=c++17", + } + }, + }; +} + +REG(helloConfigs); +} +``` + +Step 2: Bootstrap the system by compiling your build configuration along with +the libcppbuild.a static library: +```sh +g++ -std=c++17 hello_config.cc -pthread libcppbuild.a -o cppbuild +``` + +Step 3: Run cppbuild to build you application: + +```sh +./cppbuild +``` + +Any consecutive changes to the build configuration or any of the sources will +automagically trigger a rebuild of all (and only) affected sources the next time +cppbuild is executed. |