#Tiny Object Loader Cmake configuration file. #This configures the Cmake system with multiple properties, depending #on the platform and configuration it is set to build in. project(tinyobjloader) cmake_minimum_required(VERSION 2.8.11) set(TINYOBJLOADER_SOVERSION 1) set(TINYOBJLOADER_VERSION 1.0.4) #optional double precision support option(TINYOBJLOADER_USE_DOUBLE "Build library with double precision instead of single (float)" OFF) if(TINYOBJLOADER_USE_DOUBLE) add_definitions(-DTINYOBJLOADER_USE_DOUBLE) set(LIBRARY_NAME ${PROJECT_NAME}_double) else() set(LIBRARY_NAME ${PROJECT_NAME}) endif() #Folder Shortcuts set(TINYOBJLOADEREXAMPLES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples) set(tinyobjloader-Source ${CMAKE_CURRENT_SOURCE_DIR}/tiny_obj_loader.h ${CMAKE_CURRENT_SOURCE_DIR}/tiny_obj_loader.cc ) set(tinyobjloader-Example-Source ${CMAKE_CURRENT_SOURCE_DIR}/loader_example.cc ) set(tinyobjloader-examples-objsticher ${TINYOBJLOADEREXAMPLES_DIR}/obj_sticher/obj_writer.h ${TINYOBJLOADEREXAMPLES_DIR}/obj_sticher/obj_writer.cc ${TINYOBJLOADEREXAMPLES_DIR}/obj_sticher/obj_sticher.cc ) #Install destinations include(GNUInstallDirs) set(TINYOBJLOADER_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake) set(TINYOBJLOADER_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) set(TINYOBJLOADER_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}) set(TINYOBJLOADER_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}) set(TINYOBJLOADER_PKGCONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/pkgconfig) set(TINYOBJLOADER_RUNTIME_DIR ${CMAKE_INSTALL_BINDIR}) option(TINYOBJLOADER_BUILD_TEST_LOADER "Build Example Loader Application" OFF) option(TINYOBJLOADER_COMPILATION_SHARED "Build as shared library" OFF) if(TINYOBJLOADER_COMPILATION_SHARED) add_library(${LIBRARY_NAME} SHARED ${tinyobjloader-Source}) set_target_properties(${LIBRARY_NAME} PROPERTIES SOVERSION ${TINYOBJLOADER_SOVERSION} ) else() add_library(${LIBRARY_NAME} STATIC ${tinyobjloader-Source}) endif() set_target_properties(${LIBRARY_NAME} PROPERTIES VERSION ${TINYOBJLOADER_VERSION}) target_include_directories(${LIBRARY_NAME} INTERFACE $ $ ) export(TARGETS ${LIBRARY_NAME} FILE ${PROJECT_NAME}-targets.cmake) if(TINYOBJLOADER_BUILD_TEST_LOADER) add_executable(test_loader ${tinyobjloader-Example-Source}) target_link_libraries(test_loader ${LIBRARY_NAME}) endif() option(TINYOBJLOADER_BUILD_OBJ_STICHER "Build OBJ Sticher Application" OFF) if(TINYOBJLOADER_BUILD_OBJ_STICHER) add_executable(obj_sticher ${tinyobjloader-examples-objsticher}) target_link_libraries(obj_sticher ${LIBRARY_NAME}) install(TARGETS obj_sticher DESTINATION ${TINYOBJLOADER_RUNTIME_DIR} ) endif() #Write CMake package config files include(CMakePackageConfigHelpers) configure_package_config_file( ${PROJECT_NAME}-config.cmake.in ${LIBRARY_NAME}-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(${LIBRARY_NAME}-config-version.cmake VERSION ${TINYOBJLOADER_VERSION} COMPATIBILITY SameMajorVersion ) #pkg-config file configure_file(${PROJECT_NAME}.pc.in ${LIBRARY_NAME}.pc @ONLY) #Installation install(TARGETS ${LIBRARY_NAME} EXPORT ${PROJECT_NAME}-targets DESTINATION ${TINYOBJLOADER_LIBRARY_DIR} PUBLIC_HEADER DESTINATION ${TINYOBJLOADER_INCLUDE_DIR} RUNTIME DESTINATION ${TINYOBJLOADER_RUNTIME_DIR} ) install(EXPORT ${PROJECT_NAME}-targets DESTINATION ${TINYOBJLOADER_CMAKE_DIR} ) install(FILES tiny_obj_loader.h DESTINATION ${TINYOBJLOADER_INCLUDE_DIR} ) install(FILES LICENSE DESTINATION ${TINYOBJLOADER_DOC_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}-config-version.cmake" DESTINATION ${TINYOBJLOADER_CMAKE_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}.pc" DESTINATION ${TINYOBJLOADER_PKGCONFIG_DIR} )