在CMakeLists文件中指定Crypto++库

8
我可以为您翻译中文。以下是需要翻译的内容:

我试图在我的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!

感谢您的帮助!

1
如果您已经准备好一些东西,以便将来更容易地帮助其他人,请在Crypto++用户上分享。一旦它得到验证,我可以确保它在Crypto++补丁上获得一个页面。 - jww
1个回答

5
CMake没有提供Crypto++库的模块,因此您需要自己提供。您可以尝试使用此链接(我曾经使用过),或者在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
2
@jww,如果您使用了我回答中提到的cmake文件,您需要像这样包含头文件目录:include_directories(${CRYPTOPP_INCLUDE_DIRS}),并提供链接库,如下所示:target_link_libraries(<target> <other libs> ${CRYPTOPP_LIBRARIES}) - ixSci
1
“如果您使用了我答案中提到的cmake文件…” - 不,我没有遵循。如果这很重要,那么您应该在您的答案中包含它。我很少遵循出现在Stack Overflow上的外部链接。这太冒险了,特别是如果0-day存在(而Webkit有很多…)。 - jww
很抱歉要再次提出这个问题...我们正在更新Crypto++。如果您能提供一个CmakeList.txt来构建库,我们将不胜感激。您可以通过noloader的gmail地址与我联系。 - jww
@jww,你需要帮助提供用于构建Crypto++的CMake文件,还是创建用户后续在其计算机上搜索Crypto++的文件?我可以帮忙前者,但不能帮忙后者。 - ixSci
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接