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 ExternalProject\u添加如何下载URL非tar文件?_Cmake_Catch Unit Test - Fatal编程技术网

cmake ExternalProject\u添加如何下载URL非tar文件?

cmake ExternalProject\u添加如何下载URL非tar文件?,cmake,catch-unit-test,Cmake,Catch Unit Test,如何设置外部项目来下载非.tgz文件的链接 例如,提供了一个发行版,它是一个单头发行版。我只想下载这个,而不是git repo或.tgz版本。但我还没弄明白怎么让CMake这么做 我想做一些类似的事情: Include(ExternalProject) ExternalProject_Add( catch PREFIX ${CMAKE_BINARY_DIR}/catch URL https://github.com/philsquared/Catch/releases/d

如何设置外部项目来下载非.tgz文件的链接

例如,提供了一个发行版,它是一个单头发行版。我只想下载这个,而不是git repo或.tgz版本。但我还没弄明白怎么让CMake这么做

我想做一些类似的事情:

Include(ExternalProject)
ExternalProject_Add(
    catch
    PREFIX ${CMAKE_BINARY_DIR}/catch
    URL https://github.com/philsquared/Catch/releases/download/v1.9.6/catch.hpp ${CMAKE_BINARY_DIR}/catch
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    LOG_DOWNLOAD ON
)
此操作失败,因为URL假定URL是压缩的tar文件。我尝试了各种不同的下载\u命令,但都没有成功。

使用
ExternalProject\u Add的DOWNLOAD\u NO\u EXTRACT选项

只需下载文件,不提取;下载文件的完整路径如下所示

代码示例:

ExternalProject_Add(
    catch
    PREFIX ${CMAKE_BINARY_DIR}/catch
    URL https://github.com/philsquared/Catch/releases/download/v1.9.6/catch.hpp
    DOWNLOAD_NO_EXTRACT 1
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    )
文件将下载到
/src
目录中



如果同时使用LOG_DOWNLOAD选项和DOWNLOAD_NO_EXTRACT,则需要CMake 3.9才能正常工作。查看这些错误报告:,。

谢谢。那正是我想要的。还感谢您提供有关日志下载的提示。文件下载得很好。但是,在我关闭日志下载之前,CMake在下载后一直失败。我甚至使用了Cmakelist3.8.2。看来它可能又坏了。继续关注CMake问题。这在CMake 3.9中已修复,并已重新修补到3.8树中,因此如果有其他3.8版本(即3.8.3),也应在那里修复。更多信息:@Tal:谢谢,我已经相应地修正了答案。应该是下载\u NO\u摘录1