Merge pull request #117 from jamiesnape/cmake-pkg-config

Write and install CMake package config and pkg-config files
This commit is contained in:
Syoyo Fujita
2016-12-20 13:56:36 +09:00
committed by GitHub
3 changed files with 91 additions and 2 deletions

View File

@@ -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}
) )

View 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
View 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}