From: =?utf-8?q?Timo_R=C3=B6hling?= 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,12 @@ 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) 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 + $ + $ + 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 - $ - $ - ) +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 - $ - $ - ) -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" +