c++ - Cmake FetchContent 在不同的目录中有源代码和二进制文件吗?
问题描述
我想重用FetchContent声明的外部库的源文件夹,以避免多次下载多个构建配置(debug/release/android/emscripten)。澄清一下,构建配置具有不同的二进制目录,例如 /build/debug、build/release... 理想的解决方案是在{CMAKE_SOURCE_DIR}/ext中拥有外部依赖的来源,在 {CMAKE_BINARY_DIR} /中拥有二进制目录${name}-构建
使用FETCHCONTENT_BASE_DIR时(参见下面的示例),源目录被共享,但二进制目录也被共享,每当我在构建配置之间切换时都会触发完全重建。
FetchContent_Populate也有BINARY_DIR参数,但似乎没有给出预期的结果。
set(FETCHCONTENT_BASE_DIR ${CMAKE_SOURCE_DIR}/depenendencies)
FetchContent_Declare(
${name}
GIT_REPOSITORY ${url}
GIT_TAG ${tag}
GIT_PROGRESS ON
)
FetchContent_GetProperties(${name})
if (NOT ${name}_POPULATED)
FetchContent_Populate(
${name}
)
add_subdirectory(${${name}_SOURCE_DIR} ${${name}_BINARY_DIR})
解决方案
推荐阅读
- python - requests_html 使用 pyppeteer 安装 chromium 时出现 python3 SSL 证书问题
- javascript - 如何防止 React + 代码拆分覆盖 SSR?
- java - 在没有 web.xml 的情况下处理 JavaEE 中的异常
- oracle - Python cx_Oracle 错误“DPI-1047:找不到 32 位 Oracle 客户端”
- vue.js - 为什么刷新页面后音频标签不起作用
- ios - 如何在 iOS 上引导 Siri 搜索以打开 PWA 而不是在 Safari 中?
- android - Android ExpandableListView:如何检测滚动何时到达列表的底部/末尾
- frameworks - 如何使用使用 cocoa-pods 的框架创建 SDK
- ruby-on-rails - 无法在 vs 代码中附加我的 ruby on rails 项目
- flutter - 如何在颤振中加密和解密飞镖文件