CMake - 消除过时的第三方库下载

时间:2015-11-24 21:11:19

标签: download cmake googletest

我将我的项目gtest添加为外部项目,并进行全新安装 我下载并重新编译它,如下面的代码所示。我工作正常,但在每个开发步骤中,当我添加一个测试用例时,检查存储库,延迟执行,当我离网时,即使make步骤失败。 我怎么解释CMake,如果我从头开始构建表单,那么只需要下载,检查等等? (即当gtest可用时,不需要采取任何措施?)

# Add gtest
ExternalProject_Add(
    googletest
    SVN_REPOSITORY http://googletest.googlecode.com/svn/trunk/
    SVN_REVISION -r 660
    TIMEOUT 10
    PATCH_COMMAND svn patch ${CMAKE_SOURCE_DIR}/gtest.patch ${CMAKE_BINARY_DIR}/ThirdParty/src/googletest
    # Force separate output paths for debug and release builds to allow easy
    # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
               -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
               -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
               -Dgtest_force_shared_crt=ON
    # Disable install step
    INSTALL_COMMAND ""
    # Wrap download, configure and build steps in a script to log output
    LOG_DOWNLOAD ON
    LOG_CONFIGURE ON
    LOG_BUILD ON)

1 个答案:

答案 0 :(得分:1)

ExternalProject_Add函数具有UPDATE_COMMAND选项。将此选项设置为清空字符串"",就像您对INSTALL_COMMAND所做的那样,禁用更新步骤。

根据CMake 3.4的documentation,还有一个UPDATE_DISCONNECTED选项可以实现相同的结果。我自己没有尝试过,所以我不确定它是否有效。