首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake找不到cpp-netlib库

CMake找不到cpp-netlib库
EN

Stack Overflow用户
提问于 2015-12-24 05:12:43
回答 1查看 1.4K关注 0票数 2

我最近开始学习CMake,并决定将它与我正在进行的一个旧项目一起使用。该项目以cpp、boost和Openssl作为依赖项。这是我想出的工作CMakeLists.txt文件。

代码语言:javascript
复制
CMAKE_MINIMUM_REQUIRED(VERSION 3.4.1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
PROJECT(MangaMe)
INCLUDE_DIRECTORIES(includes)
ADD_EXECUTABLE(mangaMe src/mangaMe.cpp)

set(Boost_USE_MULTITHREADED ON)
FIND_PACKAGE(Boost 1.59.0 REQUIRED COMPONENTS system thread filesystem)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(mangaMe ${Boost_LIBRARIES})

SET(OPENSSL_LIB_DIR /usr/local/Cellar/openssl/1.0.2e/lib)
INCLUDE_DIRECTORIES(/usr/local/Cellar/openssl/1.0.2e/include)
TARGET_LINK_LIBRARIES(mangaMe ${OPENSSL_LIB_DIR}/libcrypto.dylib ${OPENSSL_LIB_DIR}/libssl.dylib)

#WHY DOESNT THIS WORK!?!??!!?
#FIND_PACKAGE(cppnetlib 0.11 REQUIRED COMPONENTS client-connections server-parsers uri)
#INCLUDE_DIRECTORIES(${cppnetlib_INCLUDE_DIRS})
#TARGET_LINK_LIBRARIES(mangaMe ${cppnetlib_LIBRARIES})

SET(CPPNETLIB_LIB_DIR /usr/local/Cellar/cpp-netlib/0.11.2/lib)
INCLUDE_DIRECTORIES(/usr/local/Cellar/cpp-netlib/0.11.2/include)
TARGET_LINK_LIBRARIES(mangaMe ${CPPNETLIB_LIB_DIR}/libcppnetlib-client-connections.a ${CPPNETLIB_LIB_DIR}/libcppnetlib-server-parsers.a ${CPPNETLIB_LIB_DIR}/libcppnetlib-uri.a)

我想知道是否有人知道为什么使用FIND_PACKAGE查找cppnetlib的注释删除部分不能工作?我使用自制语言安装cpp-netlib,当我运行if(cppnetlib_FOUND)时,我知道它找到了包,但是它似乎找不到库,所以当我尝试进行项目时,它会出错,说它缺少cpp-netlib中的库。我还注意到,当我将FIND_PACKAGE中的版本设置为0.11.2 (当前安装的版本)时,我会收到一条消息:

代码语言:javascript
复制
-- Boost version: 1.59.0
-- Found the following Boost libraries:
--   system
--   thread
--   filesystem
CMake Error at CMakeLists.txt:16 (FIND_PACKAGE):
  Could not find a configuration file for package "cppnetlib" that is
  compatible with requested version "0.11.2".

  The following configuration files were considered but not accepted:

    /usr/local/lib/cmake/cppnetlib/cppnetlibConfig.cmake, version: 0.11.1
    /usr/local/lib/cmake/cppnetlib/cppnetlibConfig.cmake, version: 0.11.1



-- Configuring incomplete, errors occurred!
See also "/Users/LittleNewt/gitness/mangaMe/build/CMakeFiles/CMakeOutput.log".

这并不是什么大问题,因为当我明确指定目录时,它可以工作,但我仍然想知道为什么我不能只使用FIND_PACKAGE。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-24 05:54:46

尝试将cppnetlib_INCLUDE_DIRS改为CPPNETLIB_INCLUDE_DIRS,将cppnetlib_LIBRARIES更改为CPPNETLIB_LIBRARIES

前缀不是按包名,而是由包的CMake文件中导出的。下面是使用大写字母的源代码:https://github.com/cpp-netlib/cpp-netlib/blob/master/cppnetlibConfig.cmake.in

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34447568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档