GillianGrayson / ModernCppCI

This is an example of doing a Modern C++ project with CI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Modern C++ Continuous Integration

License: MIT codecov

Build status Systems / Compilers
CLang  / GCC / XCode Builds Linux (clang / gcc) OSX (XCode clang)
Visual Studio Builds Windows (Visual Studio 2017 / 2015)

info

This is an example of doing a Modern C++ project with CI.

It use basic C++14 syntax, but nothing really complicated.

This project try to follow C++ Core Guidelines whenever its possible.

CMake is the chosen build system using ctest.

libraries used

  • spdlog for a moderm log system. (as submodule)
  • Catch2 as the test framework. (as submodule)

creating repository

Simply copy/paste the folder (without the .git folder) and run the .bat file (renaming to .sh should work for linux). This will create an initial git commit and add the required submodules.

project structure

folder Content
/lib library
/lib/src library sources
/lib/include library includes
/lib/test library test
/app application
/app/src application sources
/app/test application test
/third_party third party software

Generate project

  cmake -H. -BBuild

Auto detect everything.

If you like to set a implicit compiler set the variable CXX=${COMPILER}, for example COMPILER could be gcc, clang and so on.

Auto detect in Windows usually generate a Visual Studio project since msbuild require it, but in OSX does not generate and XCode project, since is not required for compiling using XCode clang.

Specify build type debug/release

  # generate a debug project
  cmake -H. -BBuild -DCMAKE_BUILD_TYPE=Debug
  # generate a release project
  cmake -H. -BBuild -DCMAKE_BUILD_TYPE=Release

Specify architecture

  # 64 bits architecture
  cmake -H. -BBuild -Ax64
  # ARM architecture
  cmake -H. -BBuild -AARM
  # Windows 32 bits architecture
  cmake -H. -BBuild -AxWin32

Generate different project types

  # MinGW makefiles
  cmake -H. -BBuild -G "MinGW Makefiles"
  # XCode project
  cmake -H. -BBuild -G "XCode"
  # Visual Studio 15 2017 solution
  cmake -H. -BBuild -G "Visual Studio 15 2017"

Build

From the Build folder

  # build the default build type (in multi build types usually debug)
  cmake --build .
  # build a specific build type
  cmake --build . --config Release

Run tests

From the Build folder

  # run all test using the default build type
  ctest -V
  # run all test in Release build type
  ctest -V -C Release

references

About

This is an example of doing a Modern C++ project with CI

License:MIT License


Languages

Language:C++ 80.5%Language:CMake 18.0%Language:Batchfile 1.5%