plumageRender/external/gli/CMakeLists.txt

130 lines
3.4 KiB
CMake
Raw Normal View History

2023-06-07 10:52:04 +08:00
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
cmake_policy(SET CMP0054 NEW)
project(gli)
2023-06-07 10:52:04 +08:00
set(GLI_VERSION "0.8.2")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
enable_testing()
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions(-DSOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
include_directories(".")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# To generate .asm files: /FAs
add_definitions(/Za)
endif()
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND UNIX))
set(CMAKE_CXX_FLAGS "-std=c++0x")
add_definitions(-Wall)
endif()
################################
# Add source files
file(GLOB ROOT_SOURCE ./gli/*.cpp)
file(GLOB ROOT_INLINE ./gli/*.inl)
file(GLOB ROOT_HEADER ./gli/*.hpp)
file(GLOB ROOT_TEXT ./*.txt)
file(GLOB ROOT_MD ../*.md)
file(GLOB ROOT_KMG ./doc/spec/*.html)
file(GLOB_RECURSE CORE_SOURCE ./gli/core/*.cpp)
file(GLOB_RECURSE CORE_INLINE ./gli/core/*.inl)
file(GLOB_RECURSE CORE_HEADER ./gli/core/*.hpp)
file(GLOB_RECURSE GTX_SOURCE ./gli/gtx/*.cpp)
file(GLOB_RECURSE GTX_INLINE ./gli/gtx/*.inl)
file(GLOB_RECURSE GTX_HEADER ./gli/gtx/*.hpp)
source_group("KMG Spec" FILES ${ROOT_KMG})
source_group("Text Files" FILES ${ROOT_TEXT} ${ROOT_MD})
source_group("Core Files" FILES ${CORE_SOURCE})
source_group("Core Files" FILES ${CORE_INLINE})
source_group("Core Files" FILES ${CORE_HEADER})
source_group("GTX Files" FILES ${GTX_SOURCE})
source_group("GTX Files" FILES ${GTX_INLINE})
source_group("GTX Files" FILES ${GTX_HEADER})
################################
# Add package
macro(addExternalPackageGTC NAME DIRECTORY)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/external/${DIRECTORY}/util)
set(${NAME}_PACKAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/${DIRECTORY})
find_package(${NAME})
if(NOT ${NAME}_FOUND)
message("ERROR: ${NAME} not found")
endif(NOT ${NAME}_FOUND)
endmacro(addExternalPackageGTC)
################################
# Add subdirectory
add_subdirectory(gli)
add_subdirectory(test)
#add_subdirectory(doc)
################################
# Add installer
set(GLI_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/gli")
install(DIRECTORY gli DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/gliVersion.cmake"
VERSION ${GLI_VERSION}
COMPATIBILITY AnyNewerVersion
)
# build tree package config
configure_file(
cmake/gliBuildConfig.cmake.in
gliConfig.cmake
@ONLY
)
# install tree package config
configure_package_config_file(
cmake/gliConfig.cmake.in
${GLI_INSTALL_CONFIGDIR}/gliConfig.cmake
INSTALL_DESTINATION ${GLI_INSTALL_CONFIGDIR}
PATH_VARS CMAKE_INSTALL_INCLUDEDIR
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/${GLI_INSTALL_CONFIGDIR}/gliConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/gliVersion.cmake"
DESTINATION ${GLI_INSTALL_CONFIGDIR}
)
2023-06-07 10:52:04 +08:00
add_library(gli INTERFACE)
target_include_directories(gli INTERFACE
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/external>
)
install(TARGETS gli EXPORT gliTargets)
export(
EXPORT gliTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/gliTargets.cmake"
)
install(
EXPORT gliTargets FILE gliTargets.cmake
DESTINATION ${GLI_INSTALL_CONFIGDIR}
)
export(PACKAGE gli)