自己的cmake选项过程无法通过协议HTTPS下载cmake

时间:2018-07-28 17:08:04

标签: curl https cmake openssl libcurl

当我选择我的cmake选项

cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DINSTALL_C_EXAMPLES=OFF \
-DINSTALL_PYTHON_EXAMPLES=OFF \
-DBUILD_EXAMPLES=OFF \
-DOPENCV_EXTRA_MODULES_PATH=/home/luke/cv/last/opencv_contrib/modules  ..

通过HTTPS协议下载某些必要的文件,将导致错误(写在警告中)。

CMake Warning at cmake/OpenCVDownload.cmake:190 (message):
  IPPICV: Download failed: 1;"Unsupported protocol"

  For details please refer to the download log file:

  /home/luke/cv/last/oc/opencv/build/CMakeDownloadLog.txt

Here是完整的输出-输入的CMake命令的结果。来自文件的信息:

  CMakeDownloadLog.txt

也显示为here。似乎libcurl无法正常工作。好的,我安装了最新版本的curl和OpenSSL,并且使./configure --with-ssl成为命令。当我看到已配置的log of libcurl时,可以看到有关协议枚举的HTTPS。 应该得到支持。但是Cmake再次在配置和生成过程中仍然失败,警告中编写的下载失败(上面在我的链接中显示)。 CMake告诉:不支持在libcurl中禁用,但是 libcurl说(似乎..)。支持。啊。我正在考虑,但不知道还有什么问题。

有人知道可能出什么问题吗?或者您有任何想法/提示吗?

1 个答案:

答案 0 :(得分:0)

由于安装最新的curl和openssl软件包后仍然看到错误-甚至自己构建了libcurl-我怀疑您可能已经使用其引导程序来构建了cmake自己。

在这种情况下,值得注意的是,默认情况下,cmake的clearInterval(thisVeryTimer); 脚本将忽略系统软件包,并使用所有cmake依赖项的内部版本。不幸的是,其中包括没有ssl支持的libcurl版本。这就是为什么它没有看到您添加到系统中的版本,并且仍然收到https不支持或禁用的协议错误的原因。

幸运的是,bootstrap脚本是可配置的,您可以告诉它使用各种系统库而不是其内部库!这是您如何查看可用的引导程序选项的方法:

bootstrap

这将输出如下内容:

cmake-repo> ./bootstrap --help

解决此特定问题的重要方法是Usage: ../bootstrap [<options>...] [-- <cmake-options>...] Options: [defaults in brackets after descriptions] Configuration: --help print this message --version only print version information --verbose display more information --parallel=n bootstrap cmake in parallel, where n is number of nodes [1] --enable-ccache Enable ccache when building cmake --init=FILE load FILE as script to populate cache --system-libs use all system-installed third-party libraries (for use only by package maintainers) --no-system-libs use all cmake-provided third-party libraries (default) --system-curl use system-installed curl library --no-system-curl use cmake-provided curl library (default) --system-expat use system-installed expat library --no-system-expat use cmake-provided expat library (default) --system-jsoncpp use system-installed jsoncpp library --no-system-jsoncpp use cmake-provided jsoncpp library (default) --system-zlib use system-installed zlib library --no-system-zlib use cmake-provided zlib library (default) --system-bzip2 use system-installed bzip2 library --no-system-bzip2 use cmake-provided bzip2 library (default) --system-liblzma use system-installed liblzma library --no-system-liblzma use cmake-provided liblzma library (default) --system-libarchive use system-installed libarchive library --no-system-libarchive use cmake-provided libarchive library (default) --system-librhash use system-installed librhash library --no-system-librhash use cmake-provided librhash library (default) --system-libuv use system-installed libuv library --no-system-libuv use cmake-provided libuv library (default) --qt-gui build the Qt-based GUI (requires Qt >= 4.2) --no-qt-gui do not build the Qt-based GUI (default) --qt-qmake=<qmake> use <qmake> as the qmake executable to find Qt --sphinx-info build Info manual with Sphinx --sphinx-man build man pages with Sphinx --sphinx-html build html help with Sphinx --sphinx-qthelp build qch help with Sphinx --sphinx-build=<sb> use <sb> as the sphinx-build executable --sphinx-flags=<flags> pass <flags> to sphinx-build executable Directory and file names: --prefix=PREFIX install files in tree rooted at PREFIX [/usr/local] --bindir=DIR install binaries in PREFIX/DIR [bin] --datadir=DIR install data files in PREFIX/DIR [share/cmake-3.14] --docdir=DIR install documentation files in PREFIX/DIR [doc/cmake-3.14] --mandir=DIR install man pages files in PREFIX/DIR/manN [man] --xdgdatadir=DIR install XDG specific files in PREFIX/DIR [share] 选项。

这是从源代码构建时的使用方式。 (与cmake docs用法示例不同,我更喜欢在子文件夹中构建而不是在源目录本身中构建。):

--system-curl

一旦新建的cmake替换了非ssl版本,从源代码构建opencv时,您应该能够避免那些讨厌的下载错误(这就像您所做的一样。)