Basically just this: catch2-examples
- NB: we need to actually get tests to import the bloody app they're supposed to be testing!
- Update setup.sh
- Single vs multi-binary test output
- Some menu for adding more project libraries?
- Some menu for adding more dependencies?
- Some way to set output directory
- make fetchcontent-able
- Refine cicd workflow preset
- update cicd build-and-test workflow to use a matrix
- Add Code Coverage to the GitHub workflow
- CPack/Packaging workflow
- Extra Libraries (toggled with flags, and using emscripten ports where possible)
- Ability to add more libraries? (maybe one primary shared library, then multiple private, or remove public include and have each library be shared? BAD might accidentally make libraries depend on each other)
- Actually enable the sanitizers/StaticAnalyzers in builds
- clang-tidy?
- cppcheck?
- CMAKE_PROJECT_NAME(top level project name) vs PROJECT_NAME(name given with the project setting)!
- PLATFORM (from raylib):
enum_option(PLATFORM "Desktop;Web;Android;Raspberry Pi;DRM;SDL" "Platform to build for.") - copy resources to build directory (so that tests using resources will work too)
- Project, apps, and library names
- specify cpp version
- source as lib or app
- have the templates in
src/REPLACE_ME_LIB_NAMEandsrc/REPLACE_ME_APP_NAME include/folder
- have the templates in
- GitHub Actions Workflow
- compile_commands.json (make sure it's generated) OR clang options file
- make
appfolder actually beappsfolder, then build them each as independent executables! - Add emscripten as a dependency if PLATFORM==Web
- Copies and packages files in a resource/ folder under each app, and the project root (with wasm support)
{{REPLACE_ME_PROJECT_NAME}}_ENABLE_RAYLIB{{REPLACE_ME_PROJECT_NAME}}_ENABLE_GLOBSSet if we just want to use the default templated CMakeLists.txt to glob all source files under their directory.{{REPLACE_ME_PROJECT_NAME}}_ENABLE_CATCH2_TESTS{{REPLACE_ME_PROJECT_NAME}}_ENABLE_FLECS
Tests are run as one executable for app and another for library.
./setup.shcmake --preset=default -DCMAKE_BUILD_TYPE=Debug -DENABLE_CATCH2_TESTS=ON -DENABLE_GLOBS=ONadd {{REPLACE_ME_PROJECT_NAME}}_ before the optscmake --build ./build/defaultninja -C build/default -j 24
- cd build/default && ctest -C Debug --output-on-failure --verbose
- or just:
cmake --workflow --preset=default -DENABLE_CATCH2_TESTS=ON -DENABLE_GLOBS=ON
include/project_nameThe public include folder for the libraryproject_nameappThe main executable for the project (Could just be a demo app for the library)includeprivate includes for the App.srcApp source files.testsCatch2 test sources for the App.
libraryThe main library for the project.includeprivate includes for the Lib.srcLib source files.testsCatch2 test sources for the Lib.