Skip to content

Commit edabf19

Browse files
author
Jamie Snape
committed
Write and install CMake package config files
This allows find_package(tinyobjloader) to be called.
1 parent 8bed734 commit edabf19

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

CMakeLists.txt

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
#on the platform and configuration it is set to build in.
44
project(tinyobjloader)
55
cmake_minimum_required(VERSION 2.8.6)
6+
set(TINYOBJLOADER_SOVERSION 1)
7+
set(TINYOBJLOADER_VERSION 1.0.4)
68

79
#Folder Shortcuts
810
set(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+
2532
option(TINYOBJLOADER_BUILD_TEST_LOADER "Build Example Loader Application" OFF)
2633
option(TINYOBJLOADER_COMPILATION_SHARED "Build as shared library" OFF)
2734

2835
if (TINYOBJLOADER_COMPILATION_SHARED)
2936
add_library(tinyobjloader SHARED ${tinyobjloader-Source})
37+
set_target_properties(tinyobjloader PROPERTIES
38+
SOVERSION ${TINYOBJLOADER_SOVERSION}
39+
)
3040
else()
3141
add_library(tinyobjloader STATIC ${tinyobjloader-Source})
3242
endif()
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+
3453
if(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
)
4968
endif()
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
5292
install ( 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
)
57107
install ( 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
)

tinyobjloader-config.cmake.in

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@PACKAGE_INIT@
2+
3+
set(TINYOBJLOADER_VERSION "@TINYOBJLOADER_VERSION@")
4+
5+
set_and_check(TINYOBJLOADER_INCLUDE_DIRS "@PACKAGE_TINYOBJLOADER_INCLUDE_DIR@")
6+
set_and_check(TINYOBJLOADER_LIBRARY_DIRS "@PACKAGE_TINYOBJLOADER_LIBRARY_DIR@")
7+
set(TINYOBJLOADER_LIBRARIES tinyobjloader)
8+
9+
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")

0 commit comments

Comments
 (0)