diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c3321f..e177d05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ include(FetchContent) FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG v1.17.x # Use a specific version tag or commit hash + GIT_TAG v1.17.x ) FetchContent_MakeAvailable(googletest) @@ -39,9 +39,17 @@ target_include_directories(maiden_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src" ) +target_compile_options(maiden_test PRIVATE --coverage) +target_link_options(maiden_test PRIVATE --coverage) + +# TODO: add option for disabling tests (like if target == DEBUG then tests on, otherwise tests off) target_link_libraries(maiden_test PRIVATE + GTest::gmock GTest::gmock_main ) +include(CTest) +enable_testing() # ctest is whatever + include(GoogleTest) gtest_discover_tests(maiden_test) diff --git a/README.md b/README.md index 12a1452..27d798c 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,46 @@ The maiden project is a GPU accelerated 3D rendering engine built with C++ based ## Getting Started -### git instructions here -### build instructions here +### Clone Repository +```bash +$ git clone https://git.vxbard.net/homeburger/maiden.git + +# If there's any necessary submodules then: +$ git clone --recurse-submodules https://git.vxbard.net/homeburger/maiden.git + +# If you have already cloned the repository and you need its submodules: +$ git submodule update --init --recursive +``` +### Build +This app uses CMake and C++20, so a compatible compiler (gcc8, clang9, msvc16) are necessary. + +Most library prerequisites are handled within CMake. Any others that need to be manually installed will be described below as the project grows. + +To build the project (using default build directory "build"): +```bash +# configure +$ cmake -S . -B build # + any extra options + +# build +$ cmake --build build -j + +# execute +$ cd build +$ ./maiden +``` + +### Testing +This app uses GoogleTest for building unit tests. The below instructions use ctest and gcovr for test execution and code coverage: +```bash +# execute unit tests +$ ctest -T Test # + filter options + +# analyze code coverage +$ cd build +$ gcovr -r .. --filter "../src" +``` + ### app troubleshooting here -### testing instructions here ## Development Roadmap ### lots of todo here