CMake的find_package找不到使用add_subdirectory添加的库

时间:2019-06-14 07:13:01

标签: cmake

我正在构建一个测试项目,以使用zeromq学习库cppmq,并且我希望将这两个库都包含为子目录。我目前具有以下结构:

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

我尝试使用以下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)

运行cmake时,出现以下错误:

-- 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取决于zeromq,并且看起来它试图使用find_package加载它,所以我尝试修改CMAKE_MODULE_PATH以便可以找到{{1} }文件,但也失败,并显示相同的错误:

ZeroMQConfig.cmake

有没有办法实现这一目标?我不想在系统范围内安装这些库。

1 个答案:

答案 0 :(得分:0)

尝试手动find_package之后,CMake显示以下错误消息:

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

所以我尝试使用:

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

它奏效了。