This is a boiler plate C++ project. Inspired by bsamseth and Jason Turner
.
├── CMakeLists.txt
├── app
│ └── main.cpp
├── include
│ ├── example.h
│ └── exampleConfig.h.in
├── src
│ └── example.cpp
└── tests
├── dummy.cpp
└── main.cpp
Sources go in src/, header files in include/, main programs in app/, and
tests go in tests/ (compiled to unit_tests.x
by default).
If you add a new executable, say app/hello.cpp
, you only need to add the following two lines to CMakeLists.txt:
add_executable(main.x app/main.cpp) # Name of exec. and location of file.
target_link_libraries(main.x PRIVATE engine) # Link the executable to `engine` (if it uses it).
# `engine` is the default name of the library built from src/*.cpp
You can find the example source code that builds the main.x
executable in app/main.cpp under the Build
section in CMakeLists.txt.
If the executable you made does not use the library in src/, then only the first line is needed.
Build by making a build directory (i.e. build/
), run cmake
in that dir, and then use make
to build the desired target.
Example:
> mkdir build && cd build
> cmake .. -DCMAKE_BUILD_TYPE=[Debug | Release]
> make
> ./main.x
> make catch # Makes and runs the tests.
> make doc # Generate html documentation.
The .gitignore file is a copy of the Github C++.gitignore file,
with the addition of ignoring the build directory (build/
).