Adds cmake build support.
This commit is contained in:
75
examples/standalone/README.md
Normal file
75
examples/standalone/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# TinyTest Standalone Example
|
||||
|
||||
This example demonstrates how to use TinyTest in a standalone project using CMake's FetchContent to automatically download and build TinyTest.
|
||||
|
||||
## What This Example Demonstrates
|
||||
|
||||
- How to use CMake's FetchContent to automatically download TinyTest
|
||||
- How to create test suites for different types of functions
|
||||
- How to define test cases with expected results
|
||||
- How to execute tests and collect the results
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- CMake 3.14 or higher
|
||||
- C++17 compatible compiler
|
||||
- Git (for FetchContent to download TinyTest)
|
||||
|
||||
## Building and Running
|
||||
|
||||
### On Linux/macOS
|
||||
|
||||
```bash
|
||||
# Make the build script executable
|
||||
chmod +x build.sh
|
||||
|
||||
# Run the build script
|
||||
./build.sh
|
||||
```
|
||||
|
||||
### On Windows
|
||||
|
||||
```batch
|
||||
build.bat
|
||||
```
|
||||
|
||||
## How It Works
|
||||
|
||||
1. CMake is configured to use FetchContent to download TinyTest
|
||||
2. The example executable is linked against the TinyTest library
|
||||
3. CTest is enabled to run the tests
|
||||
4. Several functions are defined and tested:
|
||||
- `add`: Adds two integers
|
||||
- `concatenate`: Concatenates two strings
|
||||
- `isPrime`: Checks if a number is prime
|
||||
- `vectorSum`: Calculates the sum of a vector of integers
|
||||
|
||||
## Code Structure
|
||||
|
||||
- `example.cpp`: Contains the functions to test and test suites
|
||||
- `CMakeLists.txt`: Configures the build system with FetchContent
|
||||
- `build.sh`/`build.bat`: Scripts to build and run the example
|
||||
|
||||
## Understanding the Integration
|
||||
|
||||
The key part of the integration is in the CMakeLists.txt file:
|
||||
|
||||
```cmake
|
||||
# Use FetchContent to download TinyTest
|
||||
FetchContent_Declare(
|
||||
tinytest
|
||||
GIT_REPOSITORY https://github.com/headhunter45/TinyTest.git
|
||||
GIT_TAG main
|
||||
)
|
||||
|
||||
# Make TinyTest available
|
||||
FetchContent_MakeAvailable(tinytest)
|
||||
|
||||
# Link against the TinyTest library
|
||||
target_link_libraries(tinytest_example
|
||||
PRIVATE
|
||||
tinytest_lib
|
||||
)
|
||||
```
|
||||
|
||||
This approach automatically downloads, builds, and links against TinyTest without requiring a separate installation step.
|
||||
Reference in New Issue
Block a user