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_Tar_Unzip - Fatal编程技术网

cmake以及如何避免多次解压缩存档

cmake以及如何避免多次解压缩存档,cmake,tar,unzip,Cmake,Tar,Unzip,我使用下面的cmake命令提取zip文件 ${CMAKE_COMMAND} -E tar xkf 这将按原样解压文件 我想避免在文件已经解压时解压。 我该怎么做?似乎没有这样的选择。添加依赖项 解压操作的结果必须在以后的构建步骤中使用。在解压和构建步骤之间添加依赖项 使用add_custom_命令解压文件并将其复制到所需文件夹 通过依赖项将目标扩展到提取的文件 以下示例显示了目标TTNLIB的情况 例如: add_custom_command(OUTPUT ${CMAKE_SOURCE_D

我使用下面的cmake命令提取zip文件

 ${CMAKE_COMMAND} -E tar xkf 
这将按原样解压文件

我想避免在文件已经解压时解压。 我该怎么做?似乎没有这样的选择。

添加依赖项

解压操作的结果必须在以后的构建步骤中使用。在解压和构建步骤之间添加依赖项

  • 使用
    add_custom_命令
    解压文件并将其复制到所需文件夹
  • 通过依赖项将目标扩展到提取的文件
  • 以下示例显示了目标
    TTNLIB
    的情况

    例如:

    add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp
    COMMAND ${CMAKE_COMMAND} -E tar xkf ${CMAKE_SOURCE_DIR}/external/ttnbitvector.cpp.zip -C ${CMAKE_SOURCE_DIR}/external
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/external/ttnbitvector.cpp ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external
    COMMENT Extract ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp
    )
    
    add_library(TTNLIB SHARED ${SOURCES} ${CMAKE_SOURCE_DIR}/src/ttnbitvector.cpp)
    
    注意:请阅读的文档


    有关更多信息,请参阅。

    测试存档中的文件或目录。如果存在,请跳过
    tar
    命令。