summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md58
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.