From 09daa1580aab96c3d1da4f3b0023f21ac0dcb4fe Mon Sep 17 00:00:00 2001 From: Florian Franzmann Date: Sun, 1 Dec 2019 18:39:30 +0100 Subject: [PATCH 25/35] Add install target for shared and static library --- CMakeLists.txt | 59 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d8f37ea..2a10e1f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.9) -project(hiberlite) +project(hiberlite VERSION 0.1) #find_package(Qt5 CONFIG REQUIRED Core Gui Widgets) @@ -13,24 +13,15 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-terminate") set(TARGET_NAME hiberlite) +include(GNUInstallDirs) + include(linker) include(sqlite) include(lto) find_package(Threads REQUIRED) -set(SOURCES - src/BeanLoader.cpp - src/BeanUpdater.cpp - src/ChildKiller.cpp - src/CppModel.cpp - src/Database.cpp - src/ModelExtractor.cpp - src/Registry.cpp - src/shared_res.cpp - src/SQLiteStmt.cpp - src/Visitor.cpp - +set(HEADERS include/BeanLoader.h include/BeanLoader_impl.hpp include/BeanUpdater.h @@ -59,28 +50,60 @@ set(SOURCES include/some_types.h ) -add_library(${TARGET_NAME} +set(SOURCES + src/BeanLoader.cpp + src/BeanUpdater.cpp + src/ChildKiller.cpp + src/CppModel.cpp + src/Database.cpp + src/ModelExtractor.cpp + src/Registry.cpp + src/shared_res.cpp + src/SQLiteStmt.cpp + src/Visitor.cpp + ) + +add_library(${TARGET_NAME}_shared SHARED + ${SOURCES} +) + +set_target_properties(${TARGET_NAME}_shared PROPERTIES VERSION ${PROJECT_VERSION}) +set_target_properties(${TARGET_NAME}_shared PROPERTIES PUBLIC_HEADER "${HEADERS}") + +add_library(${TARGET_NAME}_static STATIC ${SOURCES} ) +set_target_properties(${TARGET_NAME}_shared PROPERTIES OUTPUT_NAME ${TARGET_NAME}) +set_target_properties(${TARGET_NAME}_static PROPERTIES OUTPUT_NAME ${TARGET_NAME}) -target_include_directories(${TARGET_NAME} +target_include_directories(${TARGET_NAME}_shared PUBLIC include ${SQLITE_INCLUDES} ) -target_link_libraries(${TARGET_NAME} +target_link_libraries(${TARGET_NAME}_shared Threads::Threads dl ${LIBSQLITE} ) +target_link_libraries(${TARGET_NAME}_static + Threads::Threads + dl + ${LIBSQLITE} + ) + +install(TARGETS ${TARGET_NAME}_shared ${TARGET_NAME}_static + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hiberlite) + add_executable(sample sample.cpp ) target_link_libraries(sample - ${TARGET_NAME} + ${TARGET_NAME}_shared ) add_executable(tests @@ -88,6 +111,6 @@ add_executable(tests ) target_link_libraries(tests - ${TARGET_NAME} + ${TARGET_NAME}_shared ) -- 2.24.0 .