123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- From 6d3b803d2b0e4bf8703bbfa51a67f378d6bd59f6 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo.delrieu@tanker.io>
- Date: Tue, 19 Nov 2019 14:58:59 +0100
- Subject: [PATCH] only build one target, use BUILD_SHARED_LIBS where
- appropriate
- [Retrieved from:
- https://github.com/docopt/docopt.cpp/commit/6d3b803d2b0e4bf8703bbfa51a67f378d6bd59f6]
- Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
- ---
- CMakeLists.txt | 39 ++++++---------------------------------
- 1 file changed, 6 insertions(+), 33 deletions(-)
- diff --git a/CMakeLists.txt b/CMakeLists.txt
- index feff32e..14c3420 100644
- --- a/CMakeLists.txt
- +++ b/CMakeLists.txt
- @@ -34,33 +34,15 @@ set(docopt_HEADERS
- #============================================================================
- # Compile targets
- #============================================================================
- -if(MSVC OR XCODE)
- - # MSVC requires __declspec() attributes, which are achieved via the
- - # DOCOPT_DLL and DOCOPT_EXPORTS macros below. Since those macros are only
- - # defined when building a shared library, we must build the shared and
- - # static libraries completely separately.
- - # Xcode does not support libraries with only object files as sources.
- - # See https://cmake.org/cmake/help/v3.0/command/add_library.html?highlight=add_library
- - add_library(docopt SHARED ${docopt_SOURCES} ${docopt_HEADERS})
- - add_library(docopt_s STATIC ${docopt_SOURCES} ${docopt_HEADERS})
- -else()
- - # If not using MSVC or Xcode, we will create an intermediate object target
- - # to avoid compiling the source code twice.
- - add_library(docopt_o OBJECT ${docopt_SOURCES} ${docopt_HEADERS})
- - set_target_properties(docopt_o PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
- -
- - add_library(docopt SHARED $<TARGET_OBJECTS:docopt_o>)
- - set_target_properties(docopt PROPERTIES
- - VERSION ${PROJECT_VERSION}
- - SOVERSION ${PROJECT_VERSION_MAJOR}
- - )
- - add_library(docopt_s STATIC $<TARGET_OBJECTS:docopt_o>)
- -endif()
- +add_library(docopt ${docopt_SOURCES} ${docopt_HEADERS})
- +set_target_properties(docopt PROPERTIES
- + VERSION ${PROJECT_VERSION}
- + SOVERSION ${PROJECT_VERSION_MAJOR}
- +)
-
- target_include_directories(docopt PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> $<INSTALL_INTERFACE:include/docopt>)
- -target_include_directories(docopt_s PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> $<INSTALL_INTERFACE:include/docopt>)
-
- -if(MSVC)
- +if(MSVC AND BUILD_SHARED_LIBS)
- # DOCOPT_DLL: Must be specified when building *and* when using the DLL.
- # That's what the "PUBLIC" means.
- # DOCOPT_EXPORTS: Must use __declspec(dllexport) when building the DLL.
- @@ -69,11 +51,6 @@ if(MSVC)
- PRIVATE DOCOPT_EXPORTS)
- endif()
-
- -if(NOT MSVC)
- - set_target_properties(docopt PROPERTIES OUTPUT_NAME docopt)
- - set_target_properties(docopt_s PROPERTIES OUTPUT_NAME docopt)
- -endif()
- -
- if(USE_BOOST_REGEX)
- add_definitions("-DDOCTOPT_USE_BOOST_REGEX")
- # This is needed on Linux, where linking a static library into docopt.so
- @@ -82,9 +59,6 @@ if(USE_BOOST_REGEX)
- find_package(Boost 1.53 REQUIRED COMPONENTS regex)
- include_directories(${Boost_INCLUDE_DIRS})
- target_link_libraries(docopt ${Boost_LIBRARIES})
- - if(WITH_STATIC)
- - target_link_libraries(docopt_s ${Boost_LIBRARIES})
- - endif()
- endif()
-
- #============================================================================
- @@ -120,7 +94,6 @@ set(export_name "docopt-targets")
- install(TARGETS docopt EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR})
-
- # Development package
- -install(TARGETS docopt_s EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR})
- install(FILES ${docopt_HEADERS} DESTINATION include/docopt)
-
- # CMake Package
|