blob: 3f3dcc32b1b8dd0ef693e8bc2e7cecf6d745ddc2 [file] [log] [blame]
Tan Meng Yuef20888a2018-12-05 23:55:53 +11001cmake_minimum_required(VERSION 3.6)
2
Bryn Lloyd85b43222023-06-21 18:26:43 +02003project(tinygltf)
Tan Meng Yuef20888a2018-12-05 23:55:53 +11004
James Luke38003032022-12-27 21:12:54 -05005include(GNUInstallDirs)
6include(CMakePackageConfigHelpers)
7
Bryn Lloyd85b43222023-06-21 18:26:43 +02008set(CMAKE_CXX_STANDARD 11)
9set(CMAKE_CXX_STANDARD_REQUIRED On)
10set(CMAKE_CXX_EXTENSIONS Off)
11set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
Tan Meng Yuef20888a2018-12-05 23:55:53 +110012
syoyo001c8702020-12-18 01:09:44 +090013option(TINYGLTF_BUILD_LOADER_EXAMPLE "Build loader_example(load glTF and dump infos)" ON)
Syoyo Fujita2e700672020-05-30 02:27:25 +090014option(TINYGLTF_BUILD_GL_EXAMPLES "Build GL exampels(requires glfw, OpenGL, etc)" OFF)
15option(TINYGLTF_BUILD_VALIDATOR_EXAMPLE "Build validator exampe" OFF)
Syoyo Fujita58ceed12021-02-26 18:34:00 +090016option(TINYGLTF_BUILD_BUILDER_EXAMPLE "Build glTF builder example" OFF)
syoyo001c8702020-12-18 01:09:44 +090017option(TINYGLTF_HEADER_ONLY "On: header-only mode. Off: create tinygltf library(No TINYGLTF_IMPLEMENTATION required in your project)" OFF)
18option(TINYGLTF_INSTALL "Install tinygltf files during install step. Usually set to OFF if you include tinygltf through add_subdirectory()" ON)
Tan Meng Yuef20888a2018-12-05 23:55:53 +110019
Syoyo Fujita2e700672020-05-30 02:27:25 +090020if (TINYGLTF_BUILD_LOADER_EXAMPLE)
Bryn Lloyd85b43222023-06-21 18:26:43 +020021 add_executable(loader_example
Syoyo Fujita41916272019-10-31 01:55:57 +090022 loader_example.cc
23 )
Syoyo Fujita2e700672020-05-30 02:27:25 +090024endif (TINYGLTF_BUILD_LOADER_EXAMPLE)
Tan Meng Yue94fcfde2018-12-07 18:01:08 +110025
Syoyo Fujita2e700672020-05-30 02:27:25 +090026if (TINYGLTF_BUILD_GL_EXAMPLES)
Bryn Lloyd85b43222023-06-21 18:26:43 +020027 add_subdirectory( examples/gltfutil )
28 add_subdirectory( examples/glview )
Syoyo Fujita2e700672020-05-30 02:27:25 +090029endif (TINYGLTF_BUILD_GL_EXAMPLES)
Syoyo Fujita41916272019-10-31 01:55:57 +090030
Syoyo Fujita2e700672020-05-30 02:27:25 +090031if (TINYGLTF_BUILD_VALIDATOR_EXAMPLE)
Bryn Lloyd85b43222023-06-21 18:26:43 +020032 add_subdirectory( examples/validator )
Syoyo Fujita2e700672020-05-30 02:27:25 +090033endif (TINYGLTF_BUILD_VALIDATOR_EXAMPLE)
syoyo001c8702020-12-18 01:09:44 +090034
Syoyo Fujita58ceed12021-02-26 18:34:00 +090035if (TINYGLTF_BUILD_BUILDER_EXAMPLE)
Bryn Lloyd85b43222023-06-21 18:26:43 +020036 add_subdirectory ( examples/build-gltf )
Syoyo Fujita58ceed12021-02-26 18:34:00 +090037endif (TINYGLTF_BUILD_BUILDER_EXAMPLE)
38
Syoyo Fujita41916272019-10-31 01:55:57 +090039#
syoyo001c8702020-12-18 01:09:44 +090040# for add_subdirectory and standalone build
Syoyo Fujita41916272019-10-31 01:55:57 +090041#
syoyo001c8702020-12-18 01:09:44 +090042if (TINYGLTF_HEADER_ONLY)
43 add_library(tinygltf INTERFACE)
Syoyo Fujitaf3dc4ac2021-07-03 22:01:46 +090044
syoyo001c8702020-12-18 01:09:44 +090045 target_include_directories(tinygltf
46 INTERFACE
47 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
48 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
Tan Meng Yue94fcfde2018-12-07 18:01:08 +110049 )
Tan Meng Yue2123da72018-12-07 20:45:13 +110050
syoyo001c8702020-12-18 01:09:44 +090051else (TINYGLTF_HEADER_ONLY)
52 add_library(tinygltf)
53 target_sources(tinygltf PRIVATE
54 ${CMAKE_CURRENT_SOURCE_DIR}/tiny_gltf.cc)
55 target_include_directories(tinygltf
56 INTERFACE
57 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
58 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
59 )
60endif (TINYGLTF_HEADER_ONLY)
61
62if (TINYGLTF_INSTALL)
James Luke38003032022-12-27 21:12:54 -050063 install(TARGETS tinygltf EXPORT tinygltfTargets)
64 install(EXPORT tinygltfTargets NAMESPACE tinygltf:: FILE TinyGLTFTargets.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
65 configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/TinyGLTFConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/TinyGLTFConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
66 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TinyGLTFConfig.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
syoyo001c8702020-12-18 01:09:44 +090067 # Do not install .lib even if !TINYGLTF_HEADER_ONLY
68
69 INSTALL ( FILES
70 json.hpp
71 stb_image.h
72 stb_image_write.h
73 tiny_gltf.h
74 ${TINYGLTF_EXTRA_SOUECES}
75 DESTINATION
76 include
77 )
Syoyo Fujitaf3dc4ac2021-07-03 22:01:46 +090078
syoyo001c8702020-12-18 01:09:44 +090079endif(TINYGLTF_INSTALL)