From 9e1290855634b5360f56012a9824c7aca2b8271d Mon Sep 17 00:00:00 2001 From: Sundaram Ramaswamy Date: Thu, 25 Mar 2021 17:47:43 +0530 Subject: [PATCH] Add CMake interface library target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Projects using cglm as a header-only library needn’t build files under src/. Provide a target which allows them to skip compiling them by add_subdirectory(external/cglm EXCLUDE_FROM_ALL) target_link_libraries(MyExe PRIVATE cglm_headers) --- CMakeLists.txt | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1cd48ea..db582a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,6 +93,81 @@ target_include_directories(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src ) +# Target for header-only usage +add_library(${PROJECT_NAME}_headers INTERFACE + include/cglm/affine-mat.h + include/cglm/affine.h + include/cglm/affine2d.h + include/cglm/applesimd.h + include/cglm/bezier.h + include/cglm/box.h + include/cglm/call.h + include/cglm/cam.h + include/cglm/cglm.h + include/cglm/color.h + include/cglm/common.h + include/cglm/curve.h + include/cglm/ease.h + include/cglm/euler.h + include/cglm/frustum.h + include/cglm/io.h + include/cglm/mat2.h + include/cglm/mat3.h + include/cglm/mat4.h + include/cglm/plane.h + include/cglm/project.h + include/cglm/quat.h + include/cglm/ray.h + include/cglm/sphere.h + include/cglm/struct.h + include/cglm/types-struct.h + include/cglm/types.h + include/cglm/util.h + include/cglm/vec2-ext.h + include/cglm/vec2.h + include/cglm/vec3-ext.h + include/cglm/vec3.h + include/cglm/vec4-ext.h + include/cglm/vec4.h + include/cglm/version.h + include/cglm/simd/arm.h + include/cglm/simd/avx/affine.h + include/cglm/simd/avx/mat4.h + include/cglm/simd/intrin.h + include/cglm/simd/neon/mat4.h + include/cglm/simd/sse2/affine.h + include/cglm/simd/sse2/mat2.h + include/cglm/simd/sse2/mat3.h + include/cglm/simd/sse2/mat4.h + include/cglm/simd/sse2/quat.h + include/cglm/simd/x86.h + include/cglm/struct/affine.h + include/cglm/struct/affine2d.h + include/cglm/struct/box.h + include/cglm/struct/cam.h + include/cglm/struct/color.h + include/cglm/struct/curve.h + include/cglm/struct/euler.h + include/cglm/struct/frustum.h + include/cglm/struct/io.h + include/cglm/struct/mat2.h + include/cglm/struct/mat3.h + include/cglm/struct/mat4.h + include/cglm/struct/plane.h + include/cglm/struct/project.h + include/cglm/struct/quat.h + include/cglm/struct/sphere.h + include/cglm/struct/vec2-ext.h + include/cglm/struct/vec2.h + include/cglm/struct/vec3-ext.h + include/cglm/struct/vec3.h + include/cglm/struct/vec4-ext.h + include/cglm/struct/vec4.h + ) + +target_include_directories(${PROJECT_NAME}_headers INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/include) + # Test Configuration if(CGLM_USE_TEST) include(CTest)