CMake: извлечение tar дает ошибку без сообщения - PullRequest
0 голосов
/ 26 января 2019

Я бы хотел скачать файл tar и распаковать его в ${CMAKE_BINARY_DIR}.Все мои попытки потерпели неудачу, и я продолжаю получать ненулевое возвращаемое значение.Ниже приведен MCVE:

cmake_minimum_required(VERSION 3.0)

set(QRCODE_LIB_URL "https://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.bz2")
set(QRCODE_LIB_DOWNLOAD_TARGET "${CMAKE_BINARY_DIR}/qrencode.tar.bz")
file(DOWNLOAD ${QRCODE_LIB_URL} ${QRCODE_LIB_DOWNLOAD_TARGET} SHOW_PROGRESS)
execute_process(
    COMMAND "${CMAKE_COMMAND} -E tar xvz ${QRCODE_LIB_DOWNLOAD_TARGET}"
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    OUTPUT_VARIABLE QRCODE_EXTRACT_OUTPUT
    ERROR_VARIABLE QRCODE_EXTRACT_OUTPUT
    RESULT_VARIABLE QRCODE_EXTRACT_RETURN_VALUE
    )

if (NOT QRCODE_EXTRACT_RETURN_VALUE EQUAL 0)
    message(FATAL_ERROR "Error: ${QRCODE_EXTRACT_OUTPUT}")
endif()

project(cmakeTarTest)
add_executable(${PROJECT_NAME} "main.cpp") # this can be removed

Самая проблемная часть заключается в том, что ошибка не отображает никаких сообщений, которые я не понимаю.Некоторое время я использовал этот же рецепт (с execute_process) для запуска многих скриптов, включая скрипты python.Видимо, здесь что-то другое, что я не могу уловить.

1 Ответ

0 голосов
/ 26 января 2019

Я разобрался с решением. Команда должна быть такой:

COMMAND "${CMAKE_COMMAND}" "-E" "tar" "xvz" "${QRCODE_LIB_DOWNLOAD_TARGET}"

Намек из комментария Цыварева заставил меня осознать это.

РЕДАКТИРОВАТЬ: Я все еще не понимаю, почему переменная ошибки была пуста.

...