Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 33 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,33 @@ cmake_minimum_required (VERSION 3.2)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(sqlite_orm)
# PACKAGE_VERSION is used by cpack scripts currently
# Both sqlite_orm_VERSION and PACKAGE_VERSION should be the same for now

set(sqlite_orm_VERSION "1.3.0")
set(PACKAGE_VERSION ${sqlite_orm_VERSION})

project("sqlite_orm" VERSION ${PACKAGE_VERSION})

message(STATUS "Configuring ${CMAKE_PROJECT_NAME} ${sqlite_orm_VERSION}")

set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake")

# Build time options are defined here
include(DefineInstallationPaths)

# Generate the SqliteOrmConfig.cmake module
include(GenerateConfigModule)

set(ProjectName "SqliteOrm")

option(SqliteOrm_BuildTests "Build sqlite_orm unit tests" ON)

set(SqliteOrm_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/include")
add_library(sqlite_orm INTERFACE)
target_include_directories(sqlite_orm INTERFACE include)
target_include_directories(sqlite_orm INTERFACE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)

# Tests
include(CTest)
Expand All @@ -19,3 +39,14 @@ endif()

add_subdirectory(examples)

install(TARGETS sqlite_orm EXPORT "${ProjectName}Targets"
PUBLIC_HEADER DESTINATION "${INCLUDE_INSTALL_DIR}" COMPONENT Development)

export(EXPORT "${ProjectName}Targets"
FILE "${CMAKE_CURRENT_BINARY_DIR}/${ProjectName}/${ProjectName}Targets.cmake"
NAMESPACE "sqlite_orm::")

install(EXPORT "${ProjectName}Targets"
FILE "${ProjectName}Targets.cmake"
NAMESPACE "sqlite_orm::"
DESTINATION "${CMAKE_INSTALL_DIR}/sqlite_orm")
12 changes: 12 additions & 0 deletions build/cmake/DefineInstallationPaths.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Define the default install paths
set(BIN_INSTALL_DIR "bin" CACHE PATH "The binary install dir (default: bin)")
set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The library install dir (default: lib${LIB_SUFFIX})")
set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The library install dir (default: include)")
set(CMAKE_INSTALL_DIR "lib/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
set(PKGCONFIG_INSTALL_DIR "lib/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
set(DOC_INSTALL_DIR "share/doc" CACHE PATH "The subdirectory to install documentation files (default: share/doc)")
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "${CMAKE_INSTALL_PREFIX}/bin")
set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
set(includedir "${CMAKE_INSTALL_PREFIX}/include")
set(cmakedir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DIR}")
24 changes: 24 additions & 0 deletions build/cmake/GenerateConfigModule.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
include(CMakePackageConfigHelpers)

set(PACKAGE_INCLUDE_INSTALL_DIR "${includedir}/sqlite_orm")
set(PACKAGE_CMAKE_INSTALL_DIR "${cmakedir}/sqlite_orm")

# In CYGWIN enviroment below commands does not work properly
if (NOT CYGWIN)
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/SqliteOrmConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/SqliteOrmConfig.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_DIR}/sqlite_orm"
PATH_VARS
PACKAGE_INCLUDE_INSTALL_DIR
PACKAGE_CMAKE_INSTALL_DIR
)

write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/SqliteOrmConfigVersion.cmake"
VERSION ${sqlite_orm_VERSION}
COMPATIBILITY SameMajorVersion
)

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SqliteOrmConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/SqliteOrmConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_DIR}/sqlite_orm")
endif()
22 changes: 22 additions & 0 deletions build/cmake/SqliteOrmConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
set(SQLITE_ORM_VERSION ${sqlite_orm_VERSION})

@PACKAGE_INIT@

set_and_check(SQLITE_ORM_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
set_and_check(SQLITE_ORM_CMAKE_DIR "@PACKAGE_CMAKE_INSTALL_DIR@")

if (NOT TARGET sqlite_orm::sqlite_orm)
include("${SQLITE_ORM_CMAKE_DIR}/SqliteOrmTargets.cmake")
endif()

set(SQLITE_ORM_LIBRARIES sqlite_orm::sqlite_orm)

if ("${SQLITE_ORM_LIBRARIES}" STREQUAL "")
message(FATAL_ERROR "sqlite_orm libraries were not found")
endif()

if (NOT SqliteOrm_FIND_QUIETLY)
message(STATUS "Found sqlite_orm: ${PACKAGE_PREFIX_DIR}")
endif()

check_required_components(SqliteOrm)