Feature: Repository Infrastructure Scaffolding #1
@@ -13,7 +13,7 @@ include(FetchContent)
|
|||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
googletest
|
googletest
|
||||||
GIT_REPOSITORY https://github.com/google/googletest.git
|
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)
|
FetchContent_MakeAvailable(googletest)
|
||||||
|
|
||||||
@@ -39,9 +39,17 @@ target_include_directories(maiden_test PRIVATE
|
|||||||
"${CMAKE_CURRENT_SOURCE_DIR}/src"
|
"${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
|
target_link_libraries(maiden_test PRIVATE
|
||||||
|
GTest::gmock
|
||||||
GTest::gmock_main
|
GTest::gmock_main
|
||||||
)
|
)
|
||||||
|
|
||||||
|
include(CTest)
|
||||||
|
enable_testing() # ctest is whatever
|
||||||
|
|
||||||
include(GoogleTest)
|
include(GoogleTest)
|
||||||
gtest_discover_tests(maiden_test)
|
gtest_discover_tests(maiden_test)
|
||||||
|
|||||||
42
README.md
42
README.md
@@ -8,10 +8,46 @@ The maiden project is a GPU accelerated 3D rendering engine built with C++ based
|
|||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
### git instructions here
|
### Clone Repository
|
||||||
### build instructions here
|
```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
|
### app troubleshooting here
|
||||||
### testing instructions here
|
|
||||||
|
|
||||||
## Development Roadmap
|
## Development Roadmap
|
||||||
### lots of todo here
|
### lots of todo here
|
||||||
|
|||||||
Reference in New Issue
Block a user