diff --git a/CMakeLists.txt b/CMakeLists.txt index 4eca686..b57704d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.24.0.0) -project(sqlite3mc) +project(sqlite3mc VERSION 2.1.1) # Helper macro macro(_Enable_MT _target) @@ -300,10 +300,19 @@ else() endif() # Lib Project -add_library(${SQLITE3MC_TARGET} ${SQLITE3MC_LINK} - ${SQLITE3MC_BASE_SRCS} +add_library(${SQLITE3MC_TARGET} ${SQLITE3MC_LINK}) +add_library(${PROJECT_NAME}::${SQLITE3MC_TARGET} ALIAS ${SQLITE3MC_TARGET}) + +target_sources(${SQLITE3MC_TARGET} + PRIVATE + ${SQLITE3MC_BASE_SRCS} + + PUBLIC + FILE_SET HEADERS + BASE_DIRS src + FILES ${SQLITE3MC_PUBLIC_HEADERS} ) -target_include_directories(${SQLITE3MC_TARGET} PUBLIC +target_include_directories(${SQLITE3MC_TARGET} PRIVATE ${SQLITE3MC_INCLUDEDIRS} ) target_compile_definitions(${SQLITE3MC_TARGET} PRIVATE @@ -337,7 +346,7 @@ if(SQLITE3MC_WITH_ICU) target_compile_definitions(${SQLITE3MC_TARGET} PRIVATE ${SQLITE3MC_ICU_DEFINITIONS} ) - target_include_directories(${SQLITE3MC_TARGET} PRIVATE + target_include_directories(${SQLITE3MC_TARGET} PRIVATE ${ICU_INCLUDE_DIRS} ) target_link_libraries(${SQLITE3MC_TARGET} PRIVATE @@ -352,12 +361,35 @@ if(SQLITE3MC_STATIC_RUNTIME_LINK) endif() message("Will build ${SQLITE3MC_TARGET} as ${SQLITE3MC_LINK}") -set_target_properties(${SQLITE3MC_TARGET} PROPERTIES PUBLIC_HEADER "${SQLITE3MC_PUBLIC_HEADERS}") +include(GNUInstallDirs) INSTALL(TARGETS ${SQLITE3MC_TARGET} - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - PUBLIC_HEADER DESTINATION include/${PROJECT_NAME} - RUNTIME DESTINATION bin + EXPORT ${SQLITE3MC_TARGET}Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} + COMPONENT libraries +) + +install(EXPORT ${SQLITE3MC_TARGET}Targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SQLITE3MC_TARGET}) + +# Create config for find_package() +include(CMakePackageConfigHelpers) +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${SQLITE3MC_TARGET}ConfigVersion.cmake COMPATIBILITY SameMajorVersion) +set(SQLITE3MC_CONFIG_CONTENT "@PACKAGE_INIT@\n") +string(APPEND SQLITE3MC_CONFIG_CONTENT "include(\"\${CMAKE_CURRENT_LIST_DIR}/${SQLITE3MC_TARGET}Targets.cmake\")") +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${SQLITE3MC_TARGET}Config.cmake.in ${SQLITE3MC_CONFIG_CONTENT}) + +configure_package_config_file( + ${CMAKE_CURRENT_BINARY_DIR}/${SQLITE3MC_TARGET}Config.cmake.in + ${SQLITE3MC_TARGET}Config.cmake + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${SQLITE3MC_TARGET}" +) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/${SQLITE3MC_TARGET}ConfigVersion.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${SQLITE3MC_TARGET}Config.cmake + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${SQLITE3MC_TARGET}" ) # Shell Executable project @@ -390,7 +422,7 @@ if(SQLITE3MC_BUILD_SHELL) target_compile_definitions(${SQLITE3MC_SHELL_TARGET} PRIVATE ${SQLITE3MC_ICU_DEFINITIONS} ) - target_include_directories(${SQLITE3MC_SHELL_TARGET} PRIVATE + target_include_directories(${SQLITE3MC_SHELL_TARGET} PRIVATE ${ICU_INCLUDE_DIRS} ) target_link_libraries(${SQLITE3MC_SHELL_TARGET} PRIVATE @@ -401,14 +433,13 @@ if(SQLITE3MC_BUILD_SHELL) if(SQLITE3MC_RUNTIME_LINK) message("Will build ${SQLITE3MC_SHELL_TARGET} with static runtime") - _Enable_MT(${SQLIT3MC_SHELL_TARGET}) + _Enable_MT(${SQLITE3MC_SHELL_TARGET}) endif() message("Will build ${SQLITE3MC_SHELL_TARGET}") INSTALL(TARGETS ${SQLITE3MC_SHELL_TARGET} - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - PUBLIC_HEADER DESTINATION include/${PROJECT_NAME} - RUNTIME DESTINATION bin + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) endif()