【问题标题】:Specify Crypto++ library in a CMakeLists file在 CMakeLists 文件中指定 Crypto++ 库
【发布时间】:2015-06-23 03:00:20
【问题描述】:

我试图在我的 CMakeLists 文件中指定 Crypto++ 库,但我总是遇到错误。

这是我的CMakeLists 文件:

cmake_minimum_required(VERSION 2.8)
project( Recognition )
find_package( OpenCV REQUIRED )
find_package ( CURL REQUIRED )
find_package ( CRYPTOPP REQUIRED )
add_executable( Recognition Recognition.cpp )
target_link_libraries( Recognition ${OpenCV_LIBS} ${CURL_LIBRARY} ${CRYPTOPP_LIBRARY})

这是我得到的错误:

 By not providing "FindCRYPTOPP.cmake" in CMAKE_MODULE_PATH this project has
 asked CMake to find a package configuration file provided by "CRYPTOPP",
 but CMake did not find one.

 Could not find a package configuration file provided by "CRYPTOPP" with any
 of the following names:

 CRYPTOPPConfig.cmake
 cryptopp-config.cmake

 Add the installation prefix of "CRYPTOPP" to CMAKE_PREFIX_PATH or set
 "CRYPTOPP_DIR" to a directory containing one of the above files.  If
 "CRYPTOPP" provides a separate development package or SDK, be sure it has
 been installed.

 -- Configuring incomplete, errors occurred!

感谢您的帮助!

【问题讨论】:

  • 如果您将一些东西放在一起,以便将来对人们更容易,那么请在Crypto++ Users 分享。一旦审核通过,我可以确保它在Crypto++ Patches 获得一个页面。

标签: c++ makefile cmake crypto++


【解决方案1】:

CMake 的包中没有 Crypto++ 库的模块,因此您必须提供自己的模块。你可以试试following(我用过一次)或者google一下“Find CryptoPP cmake”。

完成文件后,将其放置在某处并指向 CMake 以在该位置搜索文件。假设你已经把它放在你的源目录下contrib/cmake子文件夹中,那么CMake代码将是:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/contrib/cmake")

因此,您现在需要使用find_package 设置模块搜索的路径,但是请注意,您应该以与.cmake 文件命名相同的方式提供包名称。例如,如果您有CryptoPP.cmake,那么您应该输入以下内容:

find_package ( CryptoPP REQUIRED )

【讨论】:

  • 这里只需要set(CMAKE_MODULE_PATH ...)find_package (CryptoPP REQUIRED) 吗?我觉得应该有一个文件列表和CXXFLAGS陪伴他们。但我不知道 Cmake,所以我可能错了。
  • @jww,这就是 Crypto++ CMake 搜索设置所需的全部内容。后来,当找到一个包时,必须使用一些变量(取决于用于找到它的cmake 文件)让目标构建系统知道它(在哪里搜索头文件,链接什么库等) .
  • @jww,如果您使用了我的回答中引用的 cmake 文件,则必须包含如下标题的目录:include_directories(${CRYPTOPP_INCLUDE_DIRS}) 并提供用于链接的库,如下所示:@987654333 @
  • “如果您使用了我的答案中引用的 cmake 文件...” - 不,我没有遵循它。如果它很重要,那么您应该将其包含在您的答案中。我很少关注 Stack Overflow 上显示的非现场链接。它太冒险了,特别是如果 0-day 在野外(而 Webkit 有很多......)。
  • @jww,这只是一个 cmake 文件的示例。这本身并不重要,因为该任务没有“标准”cmake 文件。而且由于人们可能会选择不同的文件,因此变量名称可能会有所不同。步骤将是相同的,tnough。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多