diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..acfcd3a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,146 @@ +#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 + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<INSTALL_INTERFACE:${TINYOBJLOADER_INCLUDE_DIR}> + ) + +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} + ) |