Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将cmake指向zlib包含路径?_Cmake_Build_Directory_Zlib_Minizip - Fatal编程技术网

如何将cmake指向zlib包含路径?

如何将cmake指向zlib包含路径?,cmake,build,directory,zlib,minizip,Cmake,Build,Directory,Zlib,Minizip,或任何包含目录/库 我使用cmake gui工具,所以我运行它,通常gui会突出显示它找不到的包含或库,并让您打开一个打开的对话框来设置路径,但是对于这个cmake cofig,它不会这样做,它会在gui工具的输出中以红色文本告诉您 CMake Error at C:/Program Files/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:136 (message): Could NOT find ZLI

或任何包含目录/库

我使用cmake gui工具,所以我运行它,通常gui会突出显示它找不到的包含或库,并让您打开一个打开的对话框来设置路径,但是对于这个cmake cofig,它不会这样做,它会在gui工具的输出中以红色文本告诉您

CMake Error at C:/Program Files/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
  Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:343 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.0/Modules/FindZLIB.cmake:101 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  src/CMakeLists.txt:7 (find_package)

因此,仍然使用gui,如何将cmake指向zlib include dir?

我首先假设您在某个地方安装了zlib,我猜自从cmake找到它以来,它就位于非标准位置。如果这是真的,您可以在CMake gui中设置位置。您需要首先单击顶部附近的“高级”复选框,因为FindZLIB.cmake文件有以下行“mark_as_Advanced(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)”


现在,您应该能够看到ZLIB_库ZLIB_INCLUDE_DIR选项并设置正确的路径。

对于未来的谷歌用户,根据:

includer可以将ZLIB_ROOT设置为ZLIB安装根,以告知此模块在何处查找


快速解决方案:apt get install zlib1g dev

在我的例子中,设置ZLIB\u根目录,ZLIB\u库

c:\zlib - include
        - lib

为了补充Elhanan Ilani的答案(对于像我这样的新手来说),这应该在CMakeLists.txt文件的顶部附近声明。例如:

set(ZLIB_ROOT /home/foo/zlib-1.2.11/)
set(CURL_ROOT /home/foo/anaconda3/)

在创建和构建
zlib
库时,需要
zlib.lib
静态库和
zlib.h
zconf.h
头文件来创建
minizip

因此,在构建
zlib
之后,您需要
minizip

  • 发布或调试文件夹中的zlib.lib
  • zlib.h
    zconf.h
    根目录中的头文件
现在设置DZLIB_库和DZLIB_INCLUDE_DIR如下:

cmake -G "Visual Studio 14 2015" -A Win32 -DZLIB_LIBRARY="zlib-master\Release"  -DZLIB_INCLUDE_DIR="zlib-master"

当我需要minizip库时,这个解决方案确实适用于我,希望它能帮助您。

如何在没有GUI的情况下传递它?(GUI实际上是做什么的?它存储在哪里?或者它只是用于通过GUI生成构建,并将选项传递给
cmake
命令?如果我理解正确,如果您只是调用
cmake src_dir
,您可以创建一个带有-D前缀的参数列表。在这种情况下,它将是
cmake-DZLIB_)LIBRARY=/lib/path-DZLIB_INCLUDE_DIR=/INCLUDE/path src_DIR
我不明白。我输入了源文件夹路径,构建文件夹路径,然后单击“高级”…但什么都没有发生,主列表视图是空的。我应该在哪里可以看到ZLIB_库ZLIB_INCLUDE_DIR选项?这些变量只有在其中一个CMakeLists.txt时才会显示文件调用
FindPackage(ZLIB)
。否则,在出现链接错误之前,您的构建不会知道它需要ZLIB。FindPackage调用也是自动为您正确设置库名的唯一方法。使用它,您可以使用
${ZLIB\u library}
而不仅仅是在目标链接库调用中硬编码
z
。只有ZLIB_包括_目录需要 先进的选项。或者
yum安装zlib-devel-zlib-static
on-centost OP显然在Windows上这不是一个有效的解决方案,在带有Ubuntu发行版的Windows WSL上不起作用。