diff --git a/CMakeLists.txt b/CMakeLists.txt index 3890c1248d2c4c591f8cda7f4bcc69e1d9a3b93d..b3fd25f29dee43c5adf74a8bb744c4c82f841a80 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