Skip to content

Commit

Permalink
feat(cmake config): add a modern CMake Find
Browse files Browse the repository at this point in the history
  • Loading branch information
lbartoletti committed Oct 18, 2024
1 parent c92aa73 commit 424b057
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 7 deletions.
52 changes: 45 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
cmake_minimum_required( VERSION 3.6 )
project( SFCGAL )

set( SFCGAL_VERSION_MAJOR 2 )
set( SFCGAL_VERSION_MINOR 0 )
set( SFCGAL_VERSION_PATCH 0 )

set( SFCGAL_VERSION "${SFCGAL_VERSION_MAJOR}.${SFCGAL_VERSION_MINOR}.${SFCGAL_VERSION_PATCH}" )
project( SFCGAL VERSION ${SFCGAL_VERSION} )

set( CMAKE_DEBUG_POSTFIX "d" )
set(CMAKE_CXX_STANDARD 17)
Expand Down Expand Up @@ -57,12 +63,6 @@ endif(NOT MSVC)
#-- include finders and co
set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules;${CMAKE_MODULE_PATH}" )

set( SFCGAL_VERSION_MAJOR 2 )
set( SFCGAL_VERSION_MINOR 0 )
set( SFCGAL_VERSION_PATCH 0 )

set( SFCGAL_VERSION "${SFCGAL_VERSION_MAJOR}.${SFCGAL_VERSION_MINOR}.${SFCGAL_VERSION_PATCH}" )

if (CMAKE_CXX_COMPILER MATCHES ".*clang")
set(CMAKE_COMPILER_IS_CLANGXX 1)
endif ()
Expand Down Expand Up @@ -266,3 +266,41 @@ install( PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/sfcgal-config DESTINATION bin )

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sfcgal.pc.in ${CMAKE_CURRENT_BINARY_DIR}/sfcgal.pc @ONLY)
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/sfcgal.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

# Définir les chemins d'installation
set(SFCGAL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
set(SFCGAL_LIBRARY_DIR "${CMAKE_INSTALL_LIBDIR}")

configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/SFCGALConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/SFCGALConfig.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SFCGAL"
PATH_VARS SFCGAL_INCLUDE_DIR SFCGAL_LIBRARY_DIR
)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/SFCGALConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/SFCGALConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/SFCGALConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SFCGAL"
)

install(TARGETS SFCGAL
EXPORT SFCGALTargets
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")

install(EXPORT SFCGALTargets
FILE SFCGALTargets.cmake
NAMESPACE SFCGAL::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SFCGAL")
16 changes: 16 additions & 0 deletions SFCGALConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
@PACKAGE_INIT@

include(CMakeFindDependencyMacro)

set_and_check(SFCGAL_INCLUDE_DIR "@PACKAGE_SFCGAL_INCLUDE_DIR@")
set_and_check(SFCGAL_LIBRARY_DIR "@PACKAGE_SFCGAL_LIBRARY_DIR@")

if(NOT TARGET SFCGAL::SFCGAL)
add_library(SFCGAL::SFCGAL SHARED IMPORTED)
set_target_properties(SFCGAL::SFCGAL PROPERTIES
IMPORTED_LOCATION "${SFCGAL_LIBRARY_DIR}/libSFCGAL.so"
INTERFACE_INCLUDE_DIRECTORIES "${SFCGAL_INCLUDE_DIR}"
)
endif()

check_required_components(SFCGAL)
10 changes: 10 additions & 0 deletions SFCGALConfigVersion.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
set(PACKAGE_VERSION "@SFCGAL_VERSION@")

if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()

0 comments on commit 424b057

Please sign in to comment.