Skip to content

Commit 217985a

Browse files
committed
CMake: pkg-config Fallback
Try to find installs of `libzmq` that were performed with autotools with a `pkg-config` fallback.
1 parent b0e6d4b commit 217985a

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

CMakeLists.txt

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,35 @@
11
cmake_minimum_required(VERSION 2.8.12)
22
project(cppzmq)
33

4-
find_package(ZeroMQ REQUIRED)
4+
find_package(ZeroMQ)
5+
6+
# libzmq autotools install: fallback to pkg-config
7+
if(NOT ZeroMQ_FOUND)
8+
find_package(PkgConfig)
9+
pkg_check_modules(PC_LIBZMQ QUIET libzmq)
10+
11+
set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION})
12+
find_library(ZeroMQ_LIBRARY NAMES libzmq.so
13+
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
14+
find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq.a
15+
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
16+
17+
add_library(libzmq SHARED IMPORTED)
18+
set_property(TARGET libzmq PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
19+
set_property(TARGET libzmq PROPERTY IMPORTED_LOCATION ${ZeroMQ_LIBRARY})
20+
21+
add_library(libzmq-static STATIC IMPORTED ${PC_LIBZMQ_INCLUDE_DIRS})
22+
set_property(TARGET libzmq-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
23+
set_property(TARGET libzmq-static PROPERTY IMPORTED_LOCATION ${ZeroMQ_STATIC_LIBRARY})
24+
25+
if(ZeroMQ_LIBRARY AND ZeroMQ_STATIC_LIBRARY)
26+
set(ZeroMQ_FOUND ON)
27+
endif()
28+
endif()
29+
30+
if(NOT ZeroMQ_FOUND)
31+
message(FATAL_ERROR "ZeroMQ was NOT found!")
32+
endif()
533

634
if (ZeroMQ_FOUND AND (NOT TARGET libzmq OR NOT TARGET libzmq-static))
735
message(FATAL_ERROR "ZeroMQ version not supported!")

cppzmqConfig.cmake.in

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,35 @@
1717
@PACKAGE_INIT@
1818

1919
include(CMakeFindDependencyMacro)
20-
find_dependency(ZeroMQ)
20+
find_package(ZeroMQ)
21+
22+
# libzmq autotools install: fallback to pkg-config
23+
if(NOT ZeroMQ_FOUND)
24+
find_package(PkgConfig)
25+
pkg_check_modules(PC_LIBZMQ QUIET libzmq)
26+
27+
set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION})
28+
find_library(ZeroMQ_LIBRARY NAMES libzmq.so
29+
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
30+
find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq.a
31+
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
32+
33+
add_library(libzmq SHARED IMPORTED)
34+
set_property(TARGET libzmq PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
35+
set_property(TARGET libzmq PROPERTY IMPORTED_LOCATION ${ZeroMQ_LIBRARY})
36+
37+
add_library(libzmq-static STATIC IMPORTED ${PC_LIBZMQ_INCLUDE_DIRS})
38+
set_property(TARGET libzmq-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
39+
set_property(TARGET libzmq-static PROPERTY IMPORTED_LOCATION ${ZeroMQ_STATIC_LIBRARY})
40+
41+
if(ZeroMQ_LIBRARY AND ZeroMQ_STATIC_LIBRARY)
42+
set(ZeroMQ_FOUND ON)
43+
endif()
44+
endif()
45+
46+
if(NOT ZeroMQ_FOUND)
47+
message(FATAL_ERROR "ZeroMQ was NOT found!")
48+
endif()
2149

2250
if(NOT TARGET @PROJECT_NAME@)
2351
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")

0 commit comments

Comments
 (0)