我正试图在自述文件(https://github.com/tdlib/td/tree/master/example/java)之后为td库构建一个java示例,下面是mistackes。请告诉我怎么修?
C:\Users\irina\td\jnibuild>cmake -DCMAKE_BUILD_TYPE=Debug -DTD_ENABLE_JNI=ON -DCMAKE_INSTALL_PREFIX:PATH=../example/java/td ..
-- Could NOT find ccache
-- Found OpenSSL: C:/OpenSSL-Win32/include optimized;C:/OpenSSL-Win32/lib/VC/ssleay32MD.lib;debug;C:/OpenSSL-Win32/lib/VC/ssleay32MDd.lib;optimized;C:/OpenSSL-Win32/lib/VC/libeay32MD.lib;debug;C:/OpenSSL-Win32/lib/VC/libeay32MDd.lib
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
CMake Warning at CMakeLists.txt:256 (message):
Not found zlib: skip TDLib, tdactor, tdnet, tddb
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
ZLIB_LIBRARY
linked by target "tdutils" in directory C:/Users/irina/td/tdutils
-- Configuring incomplete, errors occurred!
See also "C:/Users/irina/td/jnibuild/CMakeFiles/CMakeOutput.log".
See also "C:/Users/irina/td/jnibuild/CMakeFiles/CMakeError.log".发布于 2018-03-27 13:36:13
ZLIB for Windows是GnuWin32项目的一部分(我不确定它是否允许提供SO上的链接)。正如我所看到的,CMakeLists.txt使用find_package查找ZLIB库:
if (NOT ZLIB_FOUND)
find_package(ZLIB)
endif()
if (NOT ZLIB_FOUND)
message(WARNING "Not found zlib: skip TDLib, tdactor, tdnet, tddb")
return()
endif()find_package命令的工作原理在正式文件中得到了很好的描述
该命令有两种搜索包的模式:“Module”模式和“Config”模式。当使用上面减少的签名调用命令时,可以使用模块模式。CMake在
CMAKE_MODULE_PATH中搜索一个名为Find.cmake的文件,然后是CMake安装。如果找到该文件,则由CMake读取和处理该文件。它负责查找包,检查版本,并生成任何所需的消息。许多find-模块为版本控制提供了有限的或不支持;请查看模块文档。如果没有找到任何模块,并且没有给出MODULE选项,则命令进入Config模式。
我已经在我的Windows机器上看过FindZLIB.cmake了。该模块使用以下路径:ZLIB_ROOT和以下注册表项:
"HKEY_LOCAL_MACHINE\SOFTWARE\GnuWin32\Zlib;InstallPath“"$ENV{PROGRAMFILES}/zlib
因此,正如我所理解的,如果您使用安装程序安装GnuWin32,那么HKLM键将被写入注册表,CMake将能够找到ZLIB的路径。如果希望仅使用zip存档,则在运行ZLIB_ROOT时必须正确指定CMake参数:
cmake -DZLIB_ROOT=<PATH-to-your-unpacked-zlib> -D.....https://stackoverflow.com/questions/49511360
复制相似问题