33#on the platform and configuration it is set to build in.
44project (tinyobjloader)
55cmake_minimum_required (VERSION 2.8.6 )
6+ set (TINYOBJLOADER_SOVERSION 1)
7+ set (TINYOBJLOADER_VERSION 1.0.4)
68
79#Folder Shortcuts
810set (TINYOBJLOADEREXAMPLES_DIR ${CMAKE_CURRENT_SOURCE_DIR} /examples)
@@ -22,15 +24,32 @@ set(tinyobjloader-examples-objsticher
2224 ${TINYOBJLOADEREXAMPLES_DIR} /obj_sticher/obj_sticher.cc
2325 )
2426
27+ #Install destinations
28+ set (TINYOBJLOADER_CMAKE_DIR lib/cmake)
29+ set (TINYOBJLOADER_INCLUDE_DIR include)
30+ set (TINYOBJLOADER_LIBRARY_DIR lib)
31+
2532option (TINYOBJLOADER_BUILD_TEST_LOADER "Build Example Loader Application" OFF )
2633option (TINYOBJLOADER_COMPILATION_SHARED "Build as shared library" OFF )
2734
2835if (TINYOBJLOADER_COMPILATION_SHARED)
2936 add_library (tinyobjloader SHARED ${tinyobjloader-Source} )
37+ set_target_properties (tinyobjloader PROPERTIES
38+ SOVERSION ${TINYOBJLOADER_SOVERSION}
39+ )
3040else ()
3141 add_library (tinyobjloader STATIC ${tinyobjloader-Source} )
3242endif ()
3343
44+ set_target_properties (tinyobjloader PROPERTIES VERSION ${TINYOBJLOADER_VERSION} )
45+
46+ target_include_directories (tinyobjloader INTERFACE
47+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} >
48+ $<INSTALL_INTERFACE :${TINYOBJLOADER_INCLUDE_DIR} >
49+ )
50+
51+ export (TARGETS tinyobjloader FILE ${PROJECT_NAME} -targets.cmake )
52+
3453if (TINYOBJLOADER_BUILD_TEST_LOADER)
3554 add_executable (test_loader ${tinyobjloader-Example-Source} )
3655 target_link_libraries (test_loader tinyobjloader )
@@ -48,14 +67,51 @@ if (TINYOBJLOADER_BUILD_OBJ_STICHER)
4867 )
4968endif ()
5069
70+ #Write CMake package config files
71+ include (CMakePackageConfigHelpers )
72+
73+ configure_package_config_file (
74+ tinyobjloader-config.cmake.in
75+ tinyobjloader-config.cmake
76+ INSTALL_DESTINATION
77+ ${TINYOBJLOADER_CMAKE_DIR}
78+ PATH_VARS
79+ TINYOBJLOADER_INCLUDE_DIR
80+ TINYOBJLOADER_LIBRARY_DIR
81+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
82+ )
83+
84+ write_basic_package_version_file (tinyobjloader-config-version.cmake
85+ VERSION
86+ ${TINYOBJLOADER_VERSION}
87+ COMPATIBILITY
88+ SameMajorVersion
89+ )
90+
5191#Installation
5292install ( TARGETS
5393 tinyobjloader
94+ EXPORT ${PROJECT_NAME} -targets
95+ DESTINATION
96+ ${TINYOBJLOADER_LIBRARY_DIR}
97+ PUBLIC_HEADER DESTINATION
98+ ${TINYOBJLOADER_INCLUDE_DIR}
99+ RUNTIME DESTINATION
100+ bin
101+ )
102+ install ( EXPORT
103+ ${PROJECT_NAME} -targets
54104 DESTINATION
55- lib
105+ ${TINYOBJLOADER_LIBRARY_DIR}
56106 )
57107install ( FILES
58108 tiny_obj_loader.h
59109 DESTINATION
60- include
110+ ${TINYOBJLOADER_INCLUDE_DIR}
111+ )
112+ install ( FILES
113+ "${CMAKE_CURRENT_BINARY_DIR} /tinyobjloader-config.cmake"
114+ "${CMAKE_CURRENT_BINARY_DIR} /tinyobjloader-config-version.cmake"
115+ DESTINATION
116+ ${TINYOBJLOADER_CMAKE_DIR}
61117 )
0 commit comments