cmake - 如何防止 CMake 外部项目在每次制作时更新和重新安装?

标签 cmake external-project

经过一番痛苦之后,我成功地安排我的 CMake 项目通过ExternalProject 使用一些库。我cmake,我make,它有效 - 生活是美好的。

但是,如果我再次 make,它将执行外部项目的更新和安装步骤。我绝对希望这种情况发生。我该如何防止这种情况发生?

最佳答案

虽然您在自己的答案中提出的方式具有相同的效果,但您可能想要使用的实际选项是 UPDATE_DISCONNECTED .

来自CMake's documentation ,在更新/补丁选项部分下:
UPDATE_DISCONNECTED <bool>

When enabled, this option causes the update step to be skipped. It does not, however, prevent the download step. The update step can still be added as a step target (see ExternalProject_Add_StepTargets()) and called manually.

所以你的最终结果可能如下所示:

ExternalProject_Add( external_lib
    # ...
    UPDATE_DISCONNECTED True
)

如果您进一步阅读我引用的摘录,文档明确建议不要这样做,并建议通过目录变量 EP_UPDATE_DISCONNECTED 控制更新行为。 ,其值用作 UPDATE_DISCONNECTED 的默认值.
这意味着您可以保留您的 ExternalProject_Add免费调用UPDATE_DISCONNECTED选项,然后像这样运行 CMake 命令:

$ cmake .. -DEP_UPDATE_DISCONNECTED:BOOL=True
$ cmake --build . [your_options]

关于cmake - 如何防止 CMake 外部项目在每次制作时更新和重新安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51675100/

相关文章:

android - 使用 ExternalProject_Add 在 Android 中包含 Opus

c++ - 将导入的库链接到 CMake ExternalProject

unix - 经验丰富的 Unix 程序员使用 Microsoft 工具应该注意什么?

c++ - CMake 中预期的构建失败测试

cmake - 如何让ExternalProject_Add下载库?

build - ExternalProject 的 CMake 错误

Android NDK CMake 使用 C++17

c++ - 将具有循环链接依赖性的 makefile 转换为 CMake

android - 在 Android 上构建时为 "error in backend: Undefined temporary symbol"

c++ - CMake:构建并安装本地存储的子模块