gpt4 book ai didi

c++ - cmake:外部项目更新和离线工作

转载 作者:行者123 更新时间:2023-11-28 05:38:27 31 4
gpt4 key购买 nike

我在很长一段时间内使用外部项目来保持图书馆的最新状态像这样的东西:

 include(AddAsio)

像这样编写 AddAsio.cmake 脚本:

cmake_minimum_required(VERSION 2.8.8)
include(ExternalProject)
find_package(Git REQUIRED)

ExternalProject_Add(
asio
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/include/ext
GIT_REPOSITORY https://github.com/chriskohlhoff/asio.git
GIT_TAG master
TIMEOUT 10
UPDATE_COMMAND ${GIT_EXECUTABLE} pull
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
)

ExternalProject_Get_Property(asio source_dir)
set(ASIO_INCLUDE_DIR ${source_dir}/asio/include CACHE INTERNAL "Path to include folder for Asio")
include_directories(${INCLUDE_DIRECTORIES} ${ASIO_INCLUDE_DIR})
message("asio source dir" ${ASIO_INCLUDE_DIR})

很长一段时间都没有问题,但是昨天我遇到了一个问题,当时我的互联网提供商无法正常工作,我尝试离线工作。

此脚本尝试在每次构建时更新(git pull,查看外部项目定义),甚至所有必需的 header 都存在。并在没有连接的情况下中断构建过程。

知道如何保持这种组件更新机制,但在本地已经存在库的情况下不停止构建吗?

最佳答案

据我所知,没有简单的方法可以通过检查某些文件是否存在来使外部项目不更新。但是,您可以将 UPDATE_DISCONNECTED 设置为外部项目或设置目录的 EP_UPDATE_DISCONNECTED 属性以禁用外部项目的更新。与构建选项一起,该过程可以动态进行。例如,您可以在不更新 foobar 的情况下构建以下项目,方法是使用命令 cmake -DBUILD_OFFLINE=ON

进行配置
cmake_minimum_required (VERSION 2.8.11)
project (myrootproject C)

add_library(hello SHARED hello.c)
option(BUILD_OFFLINE "Build offline" OFF)

if (${BUILD_OFFLINE})
set_property(DIRECTORY ${myrootproject_SOURCE_DIR}
PROPERTY EP_UPDATE_DISCONNECTED 1)
endif()

include(ExternalProject)

ExternalProject_Add(foo
SVN_REPOSITORY svn://foobar.org/
)

ExternalProject_Add(bar
GIT_REPOSITORY https://github.com/blah/blah
)

关于c++ - cmake:外部项目更新和离线工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37698694/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com