CMake - 消除过时的第 3 方库下载
CMake - eliminate obsolete 3rd-party library download
我将 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)
ExternalProject_Add
函数有UPDATE_COMMAND
选项。将此选项设置为空字符串 ""
,就像您对 INSTALL_COMMAND
所做的那样,将禁用更新步骤。
根据 CMake 3.4 的 documentation,还有一个 UPDATE_DISCONNECTED
选项可以实现相同的结果。我自己没有尝试过,所以我不确定它是否像我理解的那样有效。
我将 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)
ExternalProject_Add
函数有UPDATE_COMMAND
选项。将此选项设置为空字符串 ""
,就像您对 INSTALL_COMMAND
所做的那样,将禁用更新步骤。
根据 CMake 3.4 的 documentation,还有一个 UPDATE_DISCONNECTED
选项可以实现相同的结果。我自己没有尝试过,所以我不确定它是否像我理解的那样有效。