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