2

I'm building a test project to learn libraries zeromq with cppmq, and I want to include both libraries as subdirectories. I currently have the following structure:

|-- CMakeLists.txt
|-- deps
|   |-- cppzmq-4.3.0
|   |   |-- CMakeLists.txt
|   |   `-- rest of files
|   |-- zeromq-4.3.1
|   |   |-- CMakeLists.txt
|   |   `-- rest of files
`-- main.cpp

I've tried with the following CMakeLists:

cmake_minimum_required(VERSION 3.14)
project(PruebaZeroMQ)

set(CMAKE_CXX_STANDARD 11)
add_subdirectory(deps/zeromq-4.3.1)
add_subdirectory(deps/cppzmq-4.3.0)

add_executable(PruebaZeroMQ main.cpp)

target_link_libraries(PruebaZeroMQ
        libzmq
        cppzmq)

When I run cmake, I get the following error:

-- Detected CPPZMQ Version - 4.3.0
-- CMake libzmq package not found, trying again with pkg-config (normal install of zeromq)
CMake Error at deps/cppzmq-4.3.0/CMakeLists.txt:20 (message):
  ZeroMQ was not found, neither as a CMake package nor via pkg-config

cppmq depends on zeromq, and looks like it tries to load it using find_package, so I tried to modify CMAKE_MODULE_PATH so it could find the ZeroMQConfig.cmake file, but it fails too, with the same error:

add_subdirectory(deps/zeromq-4.3.1)
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}/deps/zeromq-4.3.1 ")

add_subdirectory(deps/cppzmq-4.3.0)

Is there a way of achieving this? I'd rather not install the libraries system-wide.

José Tomás Tocino
  • 9,873
  • 5
  • 44
  • 78

1 Answers1

2

After trying to manually find_package, CMake showed the following error message:

  Add the installation prefix of "ZeroMQ" to CMAKE_PREFIX_PATH or set
  "ZeroMQ_DIR" to a directory containing one of the above files.

So I tried that, using:

set(ZeroMQ_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/zeromq-4.3.1)

And it worked.

José Tomás Tocino
  • 9,873
  • 5
  • 44
  • 78