Depend on ZeroMQ via CMake package

This commit is contained in:
Dennis Klein 2018-04-23 17:38:47 +02:00
parent 96e326cf3c
commit 7bb4b0625e
No known key found for this signature in database
GPG Key ID: 08E62D23FA0ECBBC
7 changed files with 18 additions and 135 deletions

View File

@ -36,8 +36,8 @@ option(BUILD_DDS_PLUGIN "Build DDS plugin." OFF)
find_package2(PUBLIC Boost VERSION 1.64 REQUIRED
COMPONENTS program_options thread system filesystem regex date_time signals
)
find_package2(PRIVATE ZeroMQ VERSION 4.2.2 REQUIRED)
find_package2(PUBLIC FairLogger VERSION 1.0.6 REQUIRED)
find_package2(PRIVATE ZeroMQ VERSION 4.1.5 REQUIRED)
if(BUILD_NANOMSG_TRANSPORT)
find_package2(PRIVATE nanomsg VERSION 1.0.0 REQUIRED)
@ -95,9 +95,6 @@ install(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME_LOWER}/Version.h
)
# Install cmake modules
install(FILES cmake/FindZeroMQ.cmake
DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR}
)
if(BUILD_DDS_PLUGIN)
install(FILES cmake/FindDDS.cmake
DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR}

View File

@ -6,17 +6,14 @@ C++ Message Queuing Library
* **Boost** (PUBLIC)
* **FairLogger** (PUBLIC)
* CMake
* dl
* pthread
* rt (Linux)
* ZeroMQ
* GTest (optional, `tests`)
* Msgpack (optional, `nanomsg_transport`)
* nanomsg (optional, `nanomsg_transport`)
* OFI (optional, `ofi_transport`)
* Protobuf (optional, `ofi_transport`)
* DDS (optional, `dds_plugin`)
* CMake (BUILD)
* GTest (BUILD, optional, `tests`)
* ZeroMQ (PRIVATE)
* Msgpack (PRIVATE, optional, `nanomsg_transport`)
* nanomsg (PRIVATE, optional, `nanomsg_transport`)
* OFI (PRIVATE, optional, `ofi_transport`)
* Protobuf (PRIVATE, optional, `ofi_transport`)
* DDS (PRIVATE, optional, `dds_plugin`)
## Installation

View File

@ -264,12 +264,15 @@ macro(find_package2 qualifier pkgname)
cmake_parse_arguments(ARGS "" "VERSION" "COMPONENTS" ${ARGN})
string(TOUPPER ${pkgname} pkgname_upper)
set(CMAKE_PREFIX_PATH ${${pkgname_upper}_ROOT} $ENV{${pkgname_upper}_ROOT} ${CMAKE_PREFIX_PATH})
set(old_CPP ${CMAKE_PREFIX_PATH})
set(CMAKE_PREFIX_PATH ${${pkgname_upper}_ROOT} $ENV{${pkgname_upper}_ROOT})
if(ARGS_COMPONENTS)
find_package(${pkgname} ${ARGS_VERSION} QUIET COMPONENTS ${ARGS_COMPONENTS} ${ARGS_UNPARSED_ARGUMENTS})
else()
find_package(${pkgname} ${ARGS_VERSION} QUIET ${ARGS_UNPARSED_ARGUMENTS})
endif()
set(CMAKE_PREFIX_PATH ${old_CPP})
unset(old_CPP)
if(${qualifier} STREQUAL PRIVATE)
set(PROJECT_${pkgname}_VERSION ${ARGS_VERSION})

View File

@ -1,112 +0,0 @@
################################################################################
# Copyright (C) 2012-2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH #
# #
# This software is distributed under the terms of the #
# GNU Lesser General Public Licence (LGPL) version 3, #
# copied verbatim in the file "LICENSE" #
################################################################################
#
# Authors:
#
# Mohammad Al-Turany
# Dario Berzano
# Dennis Klein
# Matthias Richter
# Alexey Rybalchenko
# Florian Uhlig
#
#
# #############################
# # Locate the ZeroMQ library #
# #############################
#
#
# Usage:
#
# find_package(ZeroMQ [version] [QUIET] [REQUIRED])
#
#
# Defines the following variables:
#
# ZeroMQ_FOUND - Found the ZeroMQ library
# ZeroMQ_INCLUDE_DIR (CMake cache) - Include directory
# ZeroMQ_LIBRARY_SHARED (CMake cache) - Path to shared libzmq
# ZeroMQ_LIBRARY_STATIC (CMake cache) - Path to static libzmq
# ZeroMQ_VERSION - full version string
# ZeroMQ_VERSION_MAJOR - major version component
# ZeroMQ_VERSION_MINOR - minor version component
# ZeroMQ_VERSION_PATCH - patch version component
#
#
# Accepts the following variables as hints for installation directories:
#
# ZEROMQ_ROOT (CMake var, ENV var)
#
#
# If the above variables are not defined, or if ZeroMQ could not be found there,
# it will look for it in the system directories. Custom ZeroMQ installations
# will always have priority over system ones.
#
if(NOT ZEROMQ_ROOT)
set(ZEROMQ_ROOT $ENV{ZEROMQ_ROOT})
endif()
find_path(ZeroMQ_INCLUDE_DIR
NAMES zmq.h zmq_utils.h
HINTS ${ZEROMQ_ROOT} $ENV{ZEROMQ_ROOT}
PATH_SUFFIXES include
DOC "ZeroMQ include directories"
)
find_library(ZeroMQ_LIBRARY_SHARED
NAMES libzmq.dylib libzmq.so
HINTS ${ZEROMQ_ROOT} $ENV{ZEROMQ_ROOT}
PATH_SUFFIXES lib
DOC "Path to libzmq.dylib or libzmq.so"
)
find_library(ZeroMQ_LIBRARY_STATIC NAMES libzmq.a
HINTS ${ZEROMQ_ROOT} $ENV{ZEROMQ_ROOT}
PATH_SUFFIXES lib
DOC "Path to libzmq.a"
)
find_file(ZeroMQ_HEADER_FILE "zmq.h"
${ZeroMQ_INCLUDE_DIR}
NO_DEFAULT_PATH
)
if(DEFINED ZeroMQ_HEADER_FILE)
file(READ "${ZeroMQ_HEADER_FILE}" _ZeroMQ_HEADER_FILE_CONTENT)
string(REGEX MATCH "#define ZMQ_VERSION_MAJOR ([0-9])" _MATCH "${_ZeroMQ_HEADER_FILE_CONTENT}")
set(ZeroMQ_VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "#define ZMQ_VERSION_MINOR ([0-9])" _MATCH "${_ZeroMQ_HEADER_FILE_CONTENT}")
set(ZeroMQ_VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "#define ZMQ_VERSION_PATCH ([0-9])" _MATCH "${_ZeroMQ_HEADER_FILE_CONTENT}")
set(ZeroMQ_VERSION_PATCH ${CMAKE_MATCH_1})
set(ZeroMQ_VERSION "${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}.${ZeroMQ_VERSION_PATCH}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ZeroMQ
REQUIRED_VARS ZeroMQ_LIBRARY_SHARED ZeroMQ_INCLUDE_DIR ZeroMQ_LIBRARY_STATIC
VERSION_VAR ZeroMQ_VERSION
)
if(ZeroMQ_FOUND AND NOT TARGET ZeroMQ)
add_library(ZeroMQ SHARED IMPORTED)
set_target_properties(ZeroMQ PROPERTIES
IMPORTED_LOCATION ${ZeroMQ_LIBRARY_SHARED}
INTERFACE_INCLUDE_DIRECTORIES ${ZeroMQ_INCLUDE_DIR}
)
endif()
mark_as_advanced(
ZeroMQ_LIBRARIES
ZeroMQ_LIBRARY_SHARED
ZeroMQ_LIBRARY_STATIC
ZeroMQ_HEADER_FILE
ZeroMQ_VERSION_MAJOR
ZeroMQ_VERSION_MINOR
ZeroMQ_VERSION_PATCH
)

View File

@ -28,7 +28,7 @@ find_package_handle_standard_args(nanomsg
if(NOT TARGET nanomsg AND nanomsg_FOUND)
add_library(nanomsg SHARED IMPORTED)
set_target_properties(nanomsg PROPERTIES
IMPORTED_LOCATION ${NANOMSG_LIBRARY_SHARED}
INTERFACE_INCLUDE_DIRECTORIES ${NANOMSG_INCLUDE_DIR}
IMPORTED_LOCATION ${nanomsg_LIBRARY_SHARED}
INTERFACE_INCLUDE_DIRECTORIES ${nanomsg_INCLUDE_DIR}
)
endif()

View File

@ -219,7 +219,6 @@ target_link_libraries(FairMQ
PUBLIC # libFairMQ AND consumers of libFairMQ link aginst public dependencies
dl
pthread
Boost::boost
Boost::program_options
Boost::thread
@ -229,10 +228,9 @@ target_link_libraries(FairMQ
Boost::date_time
Boost::signals
FairLogger::FairLogger
$<$<PLATFORM_ID:Linux>:rt>
PRIVATE # only libFairMQ links against private dependencies
ZeroMQ
libzmq
${NANOMSG_DEPS}
${OFI_DEPS}
)

View File

@ -59,7 +59,7 @@ add_testsuite(FairMQ.Parts
parts/runner.cxx
parts/_iterator_interface.cxx
LINKS FairMQ ZeroMQ
LINKS FairMQ
INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/parts
TIMEOUT 5
)
@ -69,7 +69,7 @@ add_testsuite(FairMQ.MessageResize
message_resize/runner.cxx
message_resize/_message_resize.cxx
LINKS FairMQ ZeroMQ
LINKS FairMQ
INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/message_resize
TIMEOUT 5
)