diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..54d9da7c --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,62 @@ +name: Documentation + +on: + push: + branches: [ main ] + paths: + - 'docs/**' + - 'mkdocs.yml' + - '.github/workflows/docs.yml' + pull_request: + branches: [ main ] + paths: + - 'docs/**' + - 'mkdocs.yml' + - '.github/workflows/docs.yml' + +concurrency: + group: docs-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + name: Build Documentation + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install mkdocs and dependencies + run: pip install mkdocs mkdocs-bootswatch + + - name: Build documentation + run: mkdocs build --strict + + - name: Upload artifact + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: actions/upload-pages-artifact@v3 + with: + path: site/ + + deploy: + name: Deploy to GitHub Pages + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/docs/install.md b/docs/install.md index 4a3cd311..4b4327a5 100644 --- a/docs/install.md +++ b/docs/install.md @@ -1,6 +1,6 @@ -# Installation +# Installation Guide -## Using vcpkg +## Using vcpkg (recomended) **Note**: Support vcpkg for package management 1. Install [vcpkg](https://github.com/microsoft/vcpkg) 2. Run the following command to install the orange-math package: @@ -28,6 +28,69 @@ target("...") add_packages("omath") ``` +## Using Conan +**Note**: Support Conan for package management +1. Install [Conan](https://conan.io/downloads) +2. Run the following command to install the omath package: +``` +conan install --requires="omath/[*]" --build=missing +``` +conanfile.txt +```ini +[requires] +omath/[*] + +[generators] +CMakeDeps +CMakeToolchain +``` +CMakeLists.txt +```cmake +find_package(omath CONFIG REQUIRED) +target_link_libraries(main PRIVATE omath::omath) +``` +For more details, see the [Conan documentation](https://docs.conan.io/2/). + +## Using prebuilt binaries (GitHub Releases) + +**Note**: This is the fastest option if you don’t want to build from source. + +1. **Go to the Releases page** + - Open the project’s GitHub **Releases** page and choose the latest version. + +2. **Download the correct asset for your platform** + - Pick the archive that matches your OS and architecture (for example: Windows x64 / Linux x64 / macOS arm64). + +3. **Extract the archive** + - You should end up with something like: + - `include/` (headers) + - `lib/` or `bin/` (library files / DLLs) + - sometimes `cmake/` (CMake package config) + +4. **Use it in your project** + + ### Option A: CMake package (recommended if the release includes CMake config files) + If the extracted folder contains something like `lib/cmake/omath` or `cmake/omath`, you can point CMake to it: + + ```cmake + # Example: set this to the extracted prebuilt folder + list(APPEND CMAKE_PREFIX_PATH "path/to/omath-prebuilt") + + find_package(omath CONFIG REQUIRED) + target_link_libraries(main PRIVATE omath::omath) + ``` + ### Option B: Manual include + link (works with any layout) + If there’s no CMake package config, link it manually: + ```cmake + target_include_directories(main PRIVATE "path/to/omath-prebuilt/include") + + # Choose ONE depending on what you downloaded: + # - Static library: .lib / .a + # - Shared library: .dll + .lib import (Windows), .so (Linux), .dylib (macOS) + + target_link_directories(main PRIVATE "path/to/omath-prebuilt/lib") + target_link_libraries(main PRIVATE omath) # or the actual library filename + ``` ## Build from source using CMake 1. **Preparation** @@ -62,7 +125,7 @@ target("...") Use **\-\** preset to build suitable version for yourself. Like **windows-release** or **linux-release**. | Platform Name | Build Config | - |---------------|---------------| + |---------------|---------------| | windows | release/debug | | linux | release/debug | | darwin | release/debug |