From dba650f68ea9dbd0d1f491f6d78a3fc50cc0d828 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Thu, 4 Nov 2021 16:58:20 +0100 Subject: [PATCH] WIP mixed shared/static setup --- CMakeLists.txt | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3890c12..b3fd25f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,10 @@ option(BUILD_SHARED_LIBS "Build using shared libraries" ON) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) +########################################### +### Special treatment for "Windows", +### a proprietary OS by "MicroSoft". +########################################### IF (WIN32) cmake_minimum_required(VERSION 3.15) cmake_policy(SET CMP0091 NEW) @@ -190,11 +194,25 @@ target_include_directories(caosdb PUBLIC $<INSTALL_INTERFACE:include> ) -add_library(ccaosdb src/ccaosdb.cpp) -target_link_libraries(ccaosdb - ${LIBCAOSDB} - ${CONAN_LIBS} -) +add_library(ccaosdb SHARED src/ccaosdb.cpp) +IF (WIN32) + set_target_properties(caosdb PROPERTIES + LINK_FLAGS "/WHOLEARCHIVE" + ) + target_link_libraries(ccaosdb + ${LIBCAOSDB} + ${CONAN_LIBS} + ) +ELSE() + set_target_properties(caosdb PROPERTIES + COMPILE_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + target_link_libraries(ccaosdb + "-Wl,--whole-archive" + ${LIBCAOSDB} + "-Wl,--no-whole-archive" + ${CONAN_LIBS} + ) +ENDIF() add_executable(ccaosdbcli EXCLUDE_FROM_ALL src/ccaosdbcli.c) target_include_directories(ccaosdbcli SYSTEM PUBLIC -- GitLab