c++ - CMake:提取 tar 会出现错误,但没有消息

标签 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 脚本。显然这里有一些不同的东西我无法理解。

最佳答案

我找到了解决办法。命令应该是这样的:

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

Tsyvarev评论中的暗示让我意识到了这一点。

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

关于c++ - CMake:提取 tar 会出现错误,但没有消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380383/

相关文章:

maven:在pom中指定settings.xml位置

c++ - Google V8 JavaScript 引擎 - 如何将值设置为 null?

c++ - 具有类型 'const CompareVPtrs' 的表达式将丢失一些 const-volatile 限定符以便调用

linux - 用于在文件中编辑和添加条目的 Shell 脚本

linux - __blk_end_request 和 blk_end_request 之间的区别

c++ - 如何为C++构建32位的Assimp库?

c++ - 使用自定义转换运算符向上转换到模板类

c++ - jconsole 能否用于识别 JNI C++ 对象中的内存泄漏?

linux - Apache 更新 SSL 证书

java - 你使用ant的<depend>任务吗?