--- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,14 +11,17 @@ # -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.8) +project(zmqpp) enable_testing() # prepare C++11 +if(0) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") # show all warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic") +endif() # Set compiler flags that don't work on Windows if(NOT MSVC) @@ -31,7 +34,7 @@ endif() # remove this block (see CMP0042). # # TODO: verify correctness of this flag -if(NOT DEFINED CMAKE_MACOSX_RPATH) +if(0) set(CMAKE_MACOSX_RPATH 0) endif() @@ -60,11 +63,11 @@ set( ZEROMQ_LIB_DIR "" CACHE PATH "The library directory for libzmq" set( ZEROMQ_INCLUDE_DIR "" CACHE PATH "The include directory for ZMQ" ) # Build flags -set( IS_TRAVIS_CI_BUILD true CACHE bool "Defines TRAVIS_CI_BUILD - Should the tests avoid running cases where memory is scarce." ) +set( IS_TRAVIS_CI_BUILD true CACHE BOOL "Defines TRAVIS_CI_BUILD - Should the tests avoid running cases where memory is scarce." ) # Find zmq.h and add its dir to the includes -find_path(ZEROMQ_INCLUDE zmq.h PATHS ${ZEROMQ_INCLUDE_DIR}) -include_directories(${ZEROMQ_INCLUDE_DIR} ${ZEROMQ_INCLUDE} ${CMAKE_CURRENT_SOURCE_DIR}/src ) +find_package(ZeroMQ REQUIRED CONFIG) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src ) # Do not run some tests when building on travis-ci (this cause oom error and kill the test # process) @@ -107,7 +110,8 @@ set( LIBZMQPP_SOURCES # Staticlib if (ZMQPP_BUILD_STATIC) add_library( zmqpp-static STATIC ${LIBZMQPP_SOURCES}) - target_compile_definitions(zmqpp-static PUBLIC ZMQ_STATIC ZMQPP_STATIC_DEFINE) + target_compile_definitions(zmqpp-static PUBLIC ZMQPP_STATIC_DEFINE) + target_compile_features(zmqpp-static PRIVATE cxx_std_11) if (NOT ZMQPP_LIBZMQ_CMAKE) find_library(ZEROMQ_LIBRARY_STATIC ${ZMQPP_LIBZMQ_NAME_STATIC} PATHS ${ZEROMQ_LIB_DIR}) if (NOT ZEROMQ_LIBRARY_STATIC) @@ -118,7 +122,7 @@ if (ZMQPP_BUILD_STATIC) else() # libzmq-static is the name of the target from # libzmq's CMake - target_link_libraries(zmqpp-static libzmq-static) + target_link_libraries(zmqpp-static $,libzmq,libzmq-static>) endif() list( APPEND INSTALL_TARGET_LIST zmqpp-static) set( LIB_TO_LINK_TO_EXAMPLES zmqpp-static ) @@ -127,13 +131,14 @@ endif() # ZMQPP_BUILD_STATIC # Shared lib if (ZMQPP_BUILD_SHARED) add_library( zmqpp SHARED ${LIBZMQPP_SOURCES}) + target_compile_features(zmqpp PRIVATE cxx_std_11) if (NOT ZMQPP_LIBZMQ_CMAKE) find_library(ZEROMQ_LIBRARY_SHARED ${ZMQPP_LIBZMQ_NAME_SHARED} PATHS ${ZEROMQ_LIB_DIR}) target_link_libraries( zmqpp ${ZEROMQ_LIBRARY_SHARED} ) else() # libzmq is the name of the target from # libzmq's CMake - target_link_libraries(zmqpp libzmq) + target_link_libraries(zmqpp $,libzmq,libzmq-static>) endif() list( APPEND INSTALL_TARGET_LIST zmqpp) set( LIB_TO_LINK_TO_EXAMPLES zmqpp ) @@ -141,11 +146,22 @@ endif() # ZMQPP_BUILD_SHARED # We need to link zmqpp to ws2_32 on windows for the implementation of winsock2.h if(WIN32) + if(ZMQPP_BUILD_STATIC) + target_link_libraries(zmqpp-static ws2_32) + target_compile_definitions(zmqpp-static PRIVATE NOMINMAX) + endif() + if(ZMQPP_BUILD_SHARED) target_link_libraries(zmqpp ws2_32) + target_compile_definitions(zmqpp PRIVATE NOMINMAX) + endif() endif() # WIN32 include(GenerateExportHeader) +if(ZMQPP_BUILD_SHARED) generate_export_header(zmqpp) +elseif(ZMQPP_BUILD_STATIC) + generate_export_header(zmqpp-static BASE_NAME zmqpp) +endif() include_directories(${CMAKE_CURRENT_BINARY_DIR}) # Examples