- I. Installation
- II. Integration
- III. MakeKit CLI
- IV. Usage
- V. Generate
CMakeLists.txt
- VI. The make process
- VII. Troubleshooting
The flow of the build process is the following: MakeKit first generates a Ninja build system using CMake (mk config
), then this build system is being executed in parallelized, concurrent fashion (mk make
), where each build task will use the LLVM C/C++ compiler (clang) and linker (lld). The generated build system can be updated (mk refresh
) and re-generated (mk reconfig
) any time. Similarly, the built binaries can be re-built (mk remake
) any time. If required, all generated files, including the build system and the built binaries can be permanently removed (mk clean
).
To build a source with the pre-generated CMakeLists.txt
file(s), open the command line terminal, navigate to the source directory and use mk make BUILD_TYPE
. If you want to create a build system configuration without executing it, use mk config BUILD_TYPE
instead. Later, you can execute it by mk make BUILD_TYPE
.
Using the auto-generated CMakeLists.txt
of MakeKit, when you create or refresh a build configuration, CMake will automatically find and register files in your source directory, including:
- header files (
.h
,.h++
,.hh
,.hpp
,.hxx
) - inline files (
.inc
,.inl
,.i++
,.icc
,.ipp
,.ixx
,.t++
,.tcc
,.tpp
,.txx
) - source files (
.c
,.c++
,.cc
,.cpp
,.cxx
) - Qt resource files (
.qrc
) - Qt user interface files (
.ui
) - pre-built binary object files (
.o
on macOS & Linux,.obj
on Windows) - assembler files (
.asm
,.s
) - CUDA source files (
.cu
)
If the source tree has been changed by adding or removing files, existing build configurations should be updated to reflect these changes by mk refresh BUILD_TYPE
. Note, that mk make BUILD_TYPE -R
automatically performs this refresh.
-
https://www.gnu.org/software/make/manual/html_node/Options-Summary.html
-
http://lektiondestages.blogspot.com/2017/09/setting-up-qt-5-cmake-project-for.html
-
https://github.com/boostorg/hana/wiki/Setting-up-Clang-on-Windows
-
https://metricpanda.com/rival-fortress-update-27-compiling-with-clang-on-windows
-
http://mariobadr.com/creating-a-header-only-library-with-cmake.html
-
https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1