You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -4,47 +4,190 @@ Build C, C++ and ASM files in C++
4
4
5
5
# Aim
6
6
7
+
**_BuildCC_** aims to be an alternative to **Makefiles** while using the feature rich C++ language.
8
+
9
+
# General Information
10
+
11
+
- A `compile` + `link` procedure is called a **Target**
12
+
- This means that Executables, StaticLibraries and DynamicLibraries are all categorized as Targets
13
+
- In the future C++20 modules can also be its own target dependending on compiler implementations
14
+
- Every Target requires a complementary (and compatible) **Toolchain**
15
+
- This ensures that cross compiling is very easy and explicit in nature.
16
+
- Multiple toolchains can be _mixed_ in a single build file i.e we can generate targets using the GCC, Clang, MSVC and many other compilers **simultaneously**.
17
+
- The `compile_command` and `link_command` is fed to the `process/system` call to generate files.
18
+
- Each **Target** can depend on other targets efficiently through Parallel Programming using **Taskflow**.
19
+
- Dependency between targets is explicitly mentioned through the Taskflow APIs
20
+
- This has been made easier for the user through the `buildcc::Register` module.
21
+
- Build files can be customized through command line arguments
22
+
- Command line arguments can be stored in configurable `.toml` files and passed using the `--config` flag.
23
+
- Users can define their own custom arguments.
24
+
- Argument passing has been made easy using the `buildcc::Args` module.
-[Why has _this_ third-party library been chosen?](doc/faq/why_this_lib.md)
32
167
33
-
## Features
168
+
## Design
34
169
35
-
## Community Plugin
170
+
-[Why do you track _include directories_ and _header files_?](doc/faq/include_dir_vs_header_files.md)
36
171
37
-
# FAQ
172
+
## Miscellaneous
173
+
174
+
-[Why `-Wl,--allow-multiple-definition` for MINGW?](doc/faq/mingw_taskflow_linker_option.md)
175
+
176
+
# TODO
38
177
39
-
# [TODO](TODO.md)
178
+
[List of features](TODO.md) to be implemented before buildcc can be considered production ready.
40
179
41
-
List of features to be implemented before buildcc can be considered production ready.
180
+
I would also like to request help from the Community for the following:
181
+
- Code reviews
182
+
- Design patterns
183
+
- Optimization strategies
184
+
- TODO discussions
42
185
43
186
# License Dependencies
44
187
45
188
_BuildCC_ is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full license text. _BuildCC_ aims to use open-source libraries containing permissive licenses.
46
189
47
-
> Users who would like to suggest an alternative library, raise an issue with the **license** and **advantages** clearly outlined.
190
+
> Developers who would like to suggest an alternative library, raise an issue with the **license** and **advantages** clearly outlined.
0 commit comments