簡體   English   中英

如何將外部依賴引入跨平台 CMake 項目?

[英]How to bring external dependencies into cross-platform CMake project?

將外部依賴項引入跨平台 CMake 項目的最佳方法是什么? 請參閱下面我看到的問題范圍和解決方案。

問題范圍

假設我們有一個具有以下約束的 C/C++ 項目:

  • CMake 是構建系統;
  • 必須針對不同平台(桌面、Android NDK / Yocto SDK、iOS)構建;
  • 具有使用 CMake 構建的外部依賴項(例如 Google Test);
  • 具有外部非基於 CMake 的依賴項(例如 SQLite 合並、Boost);
  • 並非所有依賴項都有 Git 上游(例如 SQLite 保存在化石中)。

很高興有東西:

  • 依賴會自動下載,讓新開發者開始編碼的步驟更少;
  • 依賴項的配置方式使 IDE(如 CLion)可以自動完成(無需執行額外的配置步驟)。

可能的解決方案

  • Git 子模塊(不清楚如何處理非基於 Cmake 且未保留在 Git 依賴項中的);
  • Google Repo 工具(與之前的問題相同);
  • CMake ExternalProject(在生成階段下載、解壓並可能修補 CMakeLists.txt 並使用 add_subdirectory 包含到項目中)。 我根據 [3] 中 Craig Scott 的 [2] 回答創建了一個 PoC[1]。

參考

您的 PoC 可能有效,但 CMake 有一個內置解決方案,用於在配置步驟期間獲取外部項目。 如果這不能滿足您的要求,例如非基於 CMake 的依賴項,您可以查看Conan

https://blog.conan.io/2018/06/11/Transparent-CMake-Integration.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM