| 1 | From: =?utf-8?q?Timo_R=C3=B6hling?= <[email protected]>
|
| 2 | Date: Tue, 31 Mar 2020 17:05:46 +0200
|
| 3 | Subject: Fix build system
|
| 4 |
|
| 5 | Forwarded: not-needed
|
| 6 | ---
|
| 7 | CMakeLists.txt | 94 ++++++++++++++++++++-----------------------
|
| 8 | cmake/TinyGLTFConfig.cmake.in | 8 +++-
|
| 9 | tiny_gltf.cpp | 3 ++
|
| 10 | 3 files changed, 53 insertions(+), 52 deletions(-)
|
| 11 | create mode 100644 tiny_gltf.cpp
|
| 12 |
|
| 13 | diff --git a/CMakeLists.txt b/CMakeLists.txt
|
| 14 | index 4301fd1..34778cf 100644
|
| 15 | |
| 16 | |
| 17 | @@ -1,14 +1,12 @@
|
| 18 | cmake_minimum_required(VERSION 3.6)
|
| 19 |
|
| 20 | -project(tinygltf)
|
| 21 | +project(TinyGLTF VERSION ${TINYGLTF_VERSION} LANGUAGES CXX)
|
| 22 |
|
| 23 | include(GNUInstallDirs)
|
| 24 | include(CMakePackageConfigHelpers)
|
| 25 |
|
| 26 | -set(CMAKE_CXX_STANDARD 11)
|
| 27 | -set(CMAKE_CXX_STANDARD_REQUIRED On)
|
| 28 | -set(CMAKE_CXX_EXTENSIONS Off)
|
| 29 | -set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
| 30 | +find_package(nlohmann_json 3 REQUIRED)
|
| 31 | +find_path(stb_INCLUDE_DIRS NAMES stb_image.h PATH_SUFFIXES stb)
|
| 32 |
|
| 33 | option(TINYGLTF_BUILD_LOADER_EXAMPLE "Build loader_example(load glTF and dump infos)" ON)
|
| 34 | option(TINYGLTF_BUILD_GL_EXAMPLES "Build GL exampels(requires glfw, OpenGL, etc)" OFF)
|
| 35 | @@ -37,51 +36,44 @@ if (TINYGLTF_BUILD_BUILDER_EXAMPLE)
|
| 36 | add_subdirectory ( examples/build-gltf )
|
| 37 | endif (TINYGLTF_BUILD_BUILDER_EXAMPLE)
|
| 38 |
|
| 39 | -#
|
| 40 | -# for add_subdirectory and standalone build
|
| 41 | -#
|
| 42 | -if (TINYGLTF_HEADER_ONLY)
|
| 43 | - add_library(tinygltf INTERFACE)
|
| 44 | +add_library(${PROJECT_NAME} tiny_gltf.h tiny_gltf.cpp)
|
| 45 | +target_include_directories(${PROJECT_NAME}
|
| 46 | + PUBLIC
|
| 47 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
| 48 | + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
| 49 | + PRIVATE
|
| 50 | + ${stb_INCLUDE_DIRS}
|
| 51 | +)
|
| 52 | +target_link_libraries(${PROJECT_NAME} PRIVATE
|
| 53 | + ${stb_LIBRARY}
|
| 54 | + nlohmann_json::nlohmann_json
|
| 55 | +)
|
| 56 | +set_target_properties(${PROJECT_NAME} PROPERTIES
|
| 57 | + OUTPUT_NAME "tinygltf"
|
| 58 | + VERSION ${PROJECT_VERSION}
|
| 59 | + SOVERSION ${TINYGLTF_SOVERSION}
|
| 60 | +)
|
| 61 | +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
| 62 |
|
| 63 | - target_include_directories(tinygltf
|
| 64 | - INTERFACE
|
| 65 | - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
| 66 | - $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
| 67 | - )
|
| 68 | +install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
|
| 69 | + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
| 70 | + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
| 71 | + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
| 72 | +)
|
| 73 | +export(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}::)
|
| 74 | +install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}::
|
| 75 | + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
| 76 | +)
|
| 77 | +install(FILES tiny_gltf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
| 78 |
|
| 79 | -else (TINYGLTF_HEADER_ONLY)
|
| 80 | - add_library(tinygltf)
|
| 81 | - target_sources(tinygltf PRIVATE
|
| 82 | - ${CMAKE_CURRENT_SOURCE_DIR}/tiny_gltf.cc)
|
| 83 | - target_include_directories(tinygltf
|
| 84 | - INTERFACE
|
| 85 | - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
| 86 | - $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
| 87 | - )
|
| 88 | -endif (TINYGLTF_HEADER_ONLY)
|
| 89 | -
|
| 90 | -if (TINYGLTF_INSTALL)
|
| 91 | - install(TARGETS tinygltf EXPORT tinygltfTargets)
|
| 92 | - install(EXPORT tinygltfTargets NAMESPACE tinygltf:: FILE TinyGLTFTargets.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tinygltf)
|
| 93 | - configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/TinyGLTFConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/TinyGLTFConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
| 94 | - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TinyGLTFConfig.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tinygltf)
|
| 95 | - # Do not install .lib even if !TINYGLTF_HEADER_ONLY
|
| 96 | -
|
| 97 | - INSTALL ( FILES
|
| 98 | - tiny_gltf.h
|
| 99 | - ${TINYGLTF_EXTRA_SOUECES}
|
| 100 | - DESTINATION
|
| 101 | - include
|
| 102 | - )
|
| 103 | -
|
| 104 | - if(TINYGLTF_INSTALL_VENDOR)
|
| 105 | - INSTALL ( FILES
|
| 106 | - json.hpp
|
| 107 | - stb_image.h
|
| 108 | - stb_image_write.h
|
| 109 | - DESTINATION
|
| 110 | - include
|
| 111 | - )
|
| 112 | - endif()
|
| 113 | -
|
| 114 | -endif(TINYGLTF_INSTALL)
|
| 115 | +configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in ${PROJECT_NAME}Config.cmake
|
| 116 | + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
| 117 | + NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
| 118 | + NO_SET_AND_CHECK_MACRO
|
| 119 | +)
|
| 120 | +write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake COMPATIBILITY SameMinorVersion)
|
| 121 | +install(FILES
|
| 122 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
|
| 123 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
|
| 124 | + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
| 125 | +)
|
| 126 | diff --git a/cmake/TinyGLTFConfig.cmake.in b/cmake/TinyGLTFConfig.cmake.in
|
| 127 | index fcccacf..89f21e4 100644
|
| 128 | |
| 129 | |
| 130 | @@ -1,3 +1,9 @@
|
| 131 | @PACKAGE_INIT@
|
| 132 |
|
| 133 | -include(${CMAKE_CURRENT_LIST_DIR}/TinyGLTFTargets.cmake)
|
| 134 | +include(FindPackageHandleStandardArgs)
|
| 135 | +
|
| 136 | +include(${CMAKE_CURRENT_LIST_DIR}/@[email protected])
|
| 137 | +
|
| 138 | +set(@PROJECT_NAME@_CONFIG ${CMAKE_CURRENT_LIST_FILE})
|
| 139 | +find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE)
|
| 140 | +
|
| 141 | diff --git a/tiny_gltf.cpp b/tiny_gltf.cpp
|
| 142 | new file mode 100644
|
| 143 | index 0000000..43e41f4
|
| 144 | |
| 145 | |
| 146 | @@ -0,0 +1,3 @@
|
| 147 | +#define TINYGLTF_IMPLEMENTATION
|
| 148 | +#include "tiny_gltf.h"
|
| 149 | +
|