Загрузка файла CMake игнорирует ошибки - PullRequest
1 голос
/ 16 апреля 2020

В рамках моей сборки выполняются следующие строки:

cmake_minimum_required(VERSION 3.12)

file(DOWNLOAD <my-url> ${CMAKE_CURRENT_BINARY_DIR}/<filename>)

В какой-то момент сервер начал работать, и теперь (после большой задержки) он возвращает Internal Server Error (code 500). Но по какой-то причине CMake просто продолжает работу, как будто ничего не происходит, и терпит неудачу позже (потому что связанный файл никогда не загружался). Как заставить CMake остановиться, если загрузка не удалась?

ОС: CentOS 7

Версия CMake: 3.14.3

1 Ответ

1 голос
/ 16 апреля 2020

Вы можете получить статус операции file(DOWNLOAD ...), указав аргумент 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()

В случае успеха будет возвращено состояние 0. В противном случае будет предоставлен другой код возврата и сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...