CMake:提取焦油会给出错误而没有消息

时间:2019-01-26 16:35:39

标签: c++ linux build cmake tar

我想下载一个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 :(得分:0)

我想出了解决方案。该命令应如下所示:

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

Tsyvarev评论的暗示使我意识到了。

编辑:我仍然不明白为什么错误变量为空。