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文件下载忽略错误_Cmake - Fatal编程技术网

CMake文件下载忽略错误

CMake文件下载忽略错误,cmake,Cmake,作为构建的一部分,将执行以下行: cmake_minimum_required(VERSION 3.12) file(DOWNLOAD <my-url> ${CMAKE_CURRENT_BINARY_DIR}/<filename>) cmake_最低要求(3.12版) 文件(下载${CMAKE\u CURRENT\u BINARY\u DIR}/) 服务器在某个时候开始运行,现在(经过长时间延迟后)返回内部服务器错误(代码500)。但出于某种原因,CMake只是继续

作为构建的一部分,将执行以下行:

cmake_minimum_required(VERSION 3.12)

file(DOWNLOAD <my-url> ${CMAKE_CURRENT_BINARY_DIR}/<filename>)
cmake_最低要求(3.12版)
文件(下载${CMAKE\u CURRENT\u BINARY\u DIR}/)
服务器在某个时候开始运行,现在(经过长时间延迟后)返回
内部服务器错误(代码500)
。但出于某种原因,CMake只是继续进行,就像什么都没发生一样,后来失败了(因为相关文件从未下载过)。如果下载失败,如何强制CMake停止

操作系统:CentOS 7


CMake版本:3.14.3

您可以通过提供
status
参数来检索操作的状态:

file(DOWNLOAD <my-url> ${CMAKE_CURRENT_BINARY_DIR}/<filename>
  STATUS DOWNLOAD_STATUS
)
# Separate the returned status code, and error message.
list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
list(GET DOWNLOAD_STATUS 1 ERROR_MESSAGE)
# Check if download was successful.
if(${STATUS_CODE} EQUAL 0)
  message(STATUS "Download completed successfully!")
else()
  # Exit CMake if the download failed, printing the error message.
  message(FATAL_ERROR "Error occurred during download: ${ERROR_MESSAGE}")
endif()
文件(下载${CMAKE\u CURRENT\u BINARY\u DIR}/
状态下载\u状态
)
#将返回的状态代码和错误消息分开。
列表(获取下载状态0状态代码)
列表(获取下载\u状态1错误\u消息)
#检查下载是否成功。
如果(${STATUS_CODE}等于0)
消息(状态“下载成功完成!”)
else()
#如果下载失败,请退出CMake,并打印错误消息。
消息(下载过程中发生致命错误:${ERROR\u message}”)
endif()

如果成功,返回的状态将为
0
。否则,将提供不同的返回代码和错误消息

似乎CMake认为手术是成功的。(没有关于忽略错误的说明,因此可以假设错误没有被忽略。)请提供准确的错误消息。此外,您可以将
LOG
选项传递到
文件(下载)
命令并打印结果日志。请注意,使用
EXPECTED\u HASH
选项可以防止下载中断。但它要求您事先知道文件的哈希。@Tsyvarev没有错误消息,它是完全静默的。我不是一个CMake大师,但我认为惯例是失败的CMake命令会导致整个过程停止。我认为CMake惯例是,如果命令失败,整个脚本都会失败。
文件(下载)
有什么特别之处?它显然无法下载文件,但执行仍在继续…@C.M.实际上,在许多情况下,情况恰恰相反。有许多CMake命令,例如
file(DOWNLOAD…
,可能会以某种方式失败,CMake不会发出任何警告,也不会终止执行。CMake开发人员正在积极研究这个问题,因为它经常被认为是CMake的一个大陷阱。正如您可以想象的那样,支持这一点并不是一件小事,因为CMake必须支持如此多的操作系统、编译器和语言。。。。对我来说似乎很微不足道,至少在这种特殊情况下。