From 0322f4eeedc52dd0b68b1fd3e8ee35f25e1cb8e1 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Mon, 15 Feb 2021 09:28:30 +0100 Subject: [PATCH] perfect, dynamic libray suppart added SOVERSION 1 used and requered except for windoof! --- CMakeLists.txt | 11 ++++++----- include/greeter/greeter.h | 1 - test/CMakeLists.txt | 6 +++++- test/source/greeter.cpp | 6 ++---- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b4da9d3..2aa0ed1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,9 @@ endif() # ---- Project settings ---- -option(BUILD_SHARED_LIBS "Create shared libraries if ON" YES) +if(NOT MSVC) + option(BUILD_SHARED_LIBS "Create shared libraries if ON" YES) +endif() if(NOT DEFINED CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 20) @@ -67,16 +69,15 @@ file(GLOB_RECURSE sources CONFIGURE_DEPENDS source/*.cpp) # Note: for header-only libraries change all PUBLIC flags to INTERFACE and create an interface # target! EITHER: add_library(Greeter INTERFACE) OR: add_library(Greeter ${headers} ${sources}) +set_target_properties(Greeter PROPERTIES SOVERSION 1 VERSION ${PROJECT_VERSION}) # EITHER: set_target_properties(Greeter PROPERTIES CXX_STANDARD ${CMAKE_CXX_STANDARD}) # OR: target_compile_features(Greeter PUBLIC cxx_std_20) # being a cross-platform target, we enforce standards conformance on MSVC EITHER: -# target_compile_options(Greeter PUBLIC "$<$:/permissive>") OR: -if(MSVC) - target_compile_options(Greeter PUBLIC /permissive) -endif() +target_compile_options(Greeter PUBLIC "$<$:/permissive>") +# OR: if(MSVC) target_compile_options(Greeter PUBLIC /permissive) endif() # Link dependencies EITHER: target_link_libraries(Greeter PRIVATE $) diff --git a/include/greeter/greeter.h b/include/greeter/greeter.h index 02c906b..3c8c1e8 100644 --- a/include/greeter/greeter.h +++ b/include/greeter/greeter.h @@ -13,7 +13,6 @@ namespace greeter { * @brief A class for saying hello in multiple languages */ class GREETER_EXPORT Greeter { - private: std::string name; public: diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1b93cd2..22195f2 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,6 +1,10 @@ cmake_minimum_required(VERSION 3.14...3.19) -project(GreeterTests LANGUAGES CXX) +project( + GreeterTests + VERSION 1 + LANGUAGES CXX +) # ---- Options ---- diff --git a/test/source/greeter.cpp b/test/source/greeter.cpp index 4873653..6fabbb5 100644 --- a/test/source/greeter.cpp +++ b/test/source/greeter.cpp @@ -2,8 +2,6 @@ #include #include -#include - TEST_CASE("Greeter") { using namespace greeter; @@ -17,8 +15,8 @@ TEST_CASE("Greeter") { TEST_CASE("Greeter version") { #if (__APPLE__ || __cpp_lib_starts_ends_with) - static_assert(std::string_view(GREETER_VERSION).starts_with("1.0")); // TBD C++20 only - CHECK(std::string(GREETER_VERSION).starts_with("1.0")); // SameMajorVersion + static_assert(std::string_view(GREETER_VERSION).starts_with("1")); // TBD C++20 only + CHECK(std::string(GREETER_VERSION).starts_with("1")); // SameMajorVersion #else static_assert(std::string_view(GREETER_VERSION) == std::string_view("1.0.1")); CHECK(std::string(GREETER_VERSION) == std::string("1.0.1"));