Build cglm ================================ | **cglm** does not have any external dependencies. .. note:: If you only need to inline versions, you don't need to build **cglm**, you don't need to link it to your program. Just import cglm to your project as dependency / external lib by copy-paste then use it as usual CMake (All platforms): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash :linenos: $ mkdir build $ cd build $ cmake .. # [Optional] -DCGLM_SHARED=ON $ make $ sudo make install # [Optional] **make** will build cglm to **build** folder. If you don't want to install **cglm** to your system's folder you can get static and dynamic libs in this folder. **CMake Options:** .. code-block:: CMake :linenos: option(CGLM_SHARED "Shared build" ON) option(CGLM_STATIC "Static build" OFF) option(CGLM_USE_C99 "" OFF) # C11 option(CGLM_USE_TEST "Enable Tests" OFF) # for make check - make test **Use as header-only library with your CMake project example** This requires no building or installation of cglm. .. code-block:: CMake :linenos: cmake_minimum_required(VERSION 3.8.2) project() add_executable(${PROJECT_NAME} src/main.c) target_link_libraries(${LIBRARY_NAME} PRIVATE cglm_headers) add_subdirectory(external/cglm/ EXCLUDE_FROM_ALL) **Use with your CMake project example** .. code-block:: CMake :linenos: cmake_minimum_required(VERSION 3.8.2) project() add_executable(${PROJECT_NAME} src/main.c) target_link_libraries(${LIBRARY_NAME} PRIVATE cglm) add_subdirectory(external/cglm/) Meson (All platforms): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: :linenos: $ meson build # [Optional] --default-library=static $ cd build $ ninja $ sudo ninja install # [Optional] **Meson Options:** .. code-block:: :linenos: c_std=c11 buildtype=release default_library=shared enable_tests=false # to run tests: ninja test **Use with your Meson project** .. code-block:: :linenos: # Clone cglm or create a cglm.wrap under /subprojects project('name', 'c') cglm_dep = dependency('cglm', fallback : 'cglm', 'cglm_dep') executable('exe', 'src/main.c', dependencies : cglm_dep) Unix (Autotools): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash :linenos: $ sh autogen.sh $ ./configure $ make $ make check # run tests (optional) $ [sudo] make install # install to system (optional) **make** will build cglm to **.libs** sub folder in project folder. If you don't want to install **cglm** to your system's folder you can get static and dynamic libs in this folder. Windows (MSBuild): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Windows related build files, project files are located in `win` folder, make sure you are inside in cglm/win folder. Code Analysis are enabled, it may take awhile to build. .. code-block:: bash :linenos: $ cd win $ .\build.bat if *msbuild* is not worked (because of multi versions of Visual Studio) then try to build with *devenv*: .. code-block:: bash :linenos: $ devenv cglm.sln /Build Release Currently tests are not available on Windows. Documentation (Sphinx): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **cglm** uses sphinx framework for documentation, it allows lot of formats for documentation. To see all options see sphinx build page: https://www.sphinx-doc.org/en/master/man/sphinx-build.html Example build: .. code-block:: bash :linenos: $ cd cglm/docs $ sphinx-build source build