Merge pull request #117 from jamiesnape/cmake-pkg-config
Write and install CMake package config and pkg-config files
This commit is contained in:
@@ -3,6 +3,8 @@
|
|||||||
#on the platform and configuration it is set to build in.
|
#on the platform and configuration it is set to build in.
|
||||||
project(tinyobjloader)
|
project(tinyobjloader)
|
||||||
cmake_minimum_required(VERSION 2.8.6)
|
cmake_minimum_required(VERSION 2.8.6)
|
||||||
|
set(TINYOBJLOADER_SOVERSION 1)
|
||||||
|
set(TINYOBJLOADER_VERSION 1.0.4)
|
||||||
|
|
||||||
#Folder Shortcuts
|
#Folder Shortcuts
|
||||||
set(TINYOBJLOADEREXAMPLES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples)
|
set(TINYOBJLOADEREXAMPLES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples)
|
||||||
@@ -22,15 +24,33 @@ set(tinyobjloader-examples-objsticher
|
|||||||
${TINYOBJLOADEREXAMPLES_DIR}/obj_sticher/obj_sticher.cc
|
${TINYOBJLOADEREXAMPLES_DIR}/obj_sticher/obj_sticher.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#Install destinations
|
||||||
|
set(TINYOBJLOADER_CMAKE_DIR lib/cmake)
|
||||||
|
set(TINYOBJLOADER_INCLUDE_DIR include)
|
||||||
|
set(TINYOBJLOADER_LIBRARY_DIR lib)
|
||||||
|
set(TINYOBJLOADER_PKGCONFIG_DIR lib/pkgconfig)
|
||||||
|
|
||||||
option(TINYOBJLOADER_BUILD_TEST_LOADER "Build Example Loader Application" OFF)
|
option(TINYOBJLOADER_BUILD_TEST_LOADER "Build Example Loader Application" OFF)
|
||||||
option(TINYOBJLOADER_COMPILATION_SHARED "Build as shared library" OFF)
|
option(TINYOBJLOADER_COMPILATION_SHARED "Build as shared library" OFF)
|
||||||
|
|
||||||
if (TINYOBJLOADER_COMPILATION_SHARED)
|
if (TINYOBJLOADER_COMPILATION_SHARED)
|
||||||
add_library(tinyobjloader SHARED ${tinyobjloader-Source})
|
add_library(tinyobjloader SHARED ${tinyobjloader-Source})
|
||||||
|
set_target_properties(tinyobjloader PROPERTIES
|
||||||
|
SOVERSION ${TINYOBJLOADER_SOVERSION}
|
||||||
|
)
|
||||||
else()
|
else()
|
||||||
add_library(tinyobjloader STATIC ${tinyobjloader-Source})
|
add_library(tinyobjloader STATIC ${tinyobjloader-Source})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(tinyobjloader PROPERTIES VERSION ${TINYOBJLOADER_VERSION})
|
||||||
|
|
||||||
|
target_include_directories(tinyobjloader INTERFACE
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
|
$<INSTALL_INTERFACE:${TINYOBJLOADER_INCLUDE_DIR}>
|
||||||
|
)
|
||||||
|
|
||||||
|
export(TARGETS tinyobjloader FILE ${PROJECT_NAME}-targets.cmake)
|
||||||
|
|
||||||
if(TINYOBJLOADER_BUILD_TEST_LOADER)
|
if(TINYOBJLOADER_BUILD_TEST_LOADER)
|
||||||
add_executable(test_loader ${tinyobjloader-Example-Source})
|
add_executable(test_loader ${tinyobjloader-Example-Source})
|
||||||
target_link_libraries(test_loader tinyobjloader)
|
target_link_libraries(test_loader tinyobjloader)
|
||||||
@@ -48,14 +68,59 @@ if (TINYOBJLOADER_BUILD_OBJ_STICHER)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#Write CMake package config files
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
tinyobjloader-config.cmake.in
|
||||||
|
tinyobjloader-config.cmake
|
||||||
|
INSTALL_DESTINATION
|
||||||
|
${TINYOBJLOADER_CMAKE_DIR}
|
||||||
|
PATH_VARS
|
||||||
|
TINYOBJLOADER_INCLUDE_DIR
|
||||||
|
TINYOBJLOADER_LIBRARY_DIR
|
||||||
|
NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||||
|
)
|
||||||
|
|
||||||
|
write_basic_package_version_file(tinyobjloader-config-version.cmake
|
||||||
|
VERSION
|
||||||
|
${TINYOBJLOADER_VERSION}
|
||||||
|
COMPATIBILITY
|
||||||
|
SameMajorVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
#pkg-config file
|
||||||
|
configure_file(tinyobjloader.pc.in tinyobjloader.pc @ONLY)
|
||||||
|
|
||||||
#Installation
|
#Installation
|
||||||
install ( TARGETS
|
install ( TARGETS
|
||||||
tinyobjloader
|
tinyobjloader
|
||||||
|
EXPORT ${PROJECT_NAME}-targets
|
||||||
DESTINATION
|
DESTINATION
|
||||||
lib
|
${TINYOBJLOADER_LIBRARY_DIR}
|
||||||
|
PUBLIC_HEADER DESTINATION
|
||||||
|
${TINYOBJLOADER_INCLUDE_DIR}
|
||||||
|
RUNTIME DESTINATION
|
||||||
|
bin
|
||||||
|
)
|
||||||
|
install ( EXPORT
|
||||||
|
${PROJECT_NAME}-targets
|
||||||
|
DESTINATION
|
||||||
|
${TINYOBJLOADER_LIBRARY_DIR}
|
||||||
)
|
)
|
||||||
install ( FILES
|
install ( FILES
|
||||||
tiny_obj_loader.h
|
tiny_obj_loader.h
|
||||||
DESTINATION
|
DESTINATION
|
||||||
include
|
${TINYOBJLOADER_INCLUDE_DIR}
|
||||||
|
)
|
||||||
|
install ( FILES
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/tinyobjloader-config.cmake"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/tinyobjloader-config-version.cmake"
|
||||||
|
DESTINATION
|
||||||
|
${TINYOBJLOADER_CMAKE_DIR}
|
||||||
|
)
|
||||||
|
install ( FILES
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/tinyobjloader.pc"
|
||||||
|
DESTINATION
|
||||||
|
${TINYOBJLOADER_PKGCONFIG_DIR}
|
||||||
)
|
)
|
||||||
|
|||||||
9
tinyobjloader-config.cmake.in
Normal file
9
tinyobjloader-config.cmake.in
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
set(TINYOBJLOADER_VERSION "@TINYOBJLOADER_VERSION@")
|
||||||
|
|
||||||
|
set_and_check(TINYOBJLOADER_INCLUDE_DIRS "@PACKAGE_TINYOBJLOADER_INCLUDE_DIR@")
|
||||||
|
set_and_check(TINYOBJLOADER_LIBRARY_DIRS "@PACKAGE_TINYOBJLOADER_LIBRARY_DIR@")
|
||||||
|
set(TINYOBJLOADER_LIBRARIES tinyobjloader)
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
|
||||||
15
tinyobjloader.pc.in
Normal file
15
tinyobjloader.pc.in
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Generated by CMake @CMAKE_VERSION@ for @PROJECT_NAME@. Any changes to this
|
||||||
|
# file will be overwritten by the next CMake run. The input file was
|
||||||
|
# tinyobjloader.pc.in.
|
||||||
|
|
||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
libdir=${prefix}/@TINYOBJLOADER_LIBRARY_DIR@
|
||||||
|
includedir=${prefix}/@TINYOBJLOADER_INCLUDE_DIR@
|
||||||
|
|
||||||
|
Name: @PROJECT_NAME@
|
||||||
|
Description: Tiny but powerful single file wavefront obj loader
|
||||||
|
URL: https://syoyo.github.io/tinyobjloader/
|
||||||
|
Version: @TINYOBJLOADER_VERSION@
|
||||||
|
Libs: -L${libdir} -ltinyobjloader
|
||||||
|
Cflags: -I${includedir}
|
||||||
Reference in New Issue
Block a user