【问题标题】:What is the best way to integrate a CMake project into Buck?将 CMake 项目集成到 Buck 的最佳方法是什么?
【发布时间】:2016-12-06 12:12:26
【问题描述】:

我将 Buck 用于我自己的 C++ 项目,但我依赖于使用 CMake 构建的第三方库。 CMake 文件很复杂,所以我认为在 Buck 中重新创建他们的 CMake 文件是不切实际的。相反,我想从 Buck 调用 CMake。

从 Buck 调用 CMake 的最佳方式是什么?

我应该如何组织我的项目以尽量减少麻烦?

【问题讨论】:

  • 您想在构建过程中构建该 CMake 库吗?
  • 正确。我将源作为 Git 子模块拉取。
  • 也许您可以尝试使用 genrule? buckbuild.com/rule/genrule.html

标签: c++ build cmake buck


【解决方案1】:

我的建议是使用 genrule 和 prebuilt_cxx_library。

这是我使用 Google Test 的 Buck 研究项目: https://github.com/ar90n/lab/tree/master/sandbox/buck-study/gtest

该项目包含两个 Buck 文件。一个 (./gtest/BUCK) 用于获取和构建 Google 测试。另一个 (./BUCK) 用于构建和运行测试程序。

如果您想构建并运行这个项目,请执行以下命令,

$ buck fetch //gtest:googletest-src
$ buck build :sample1
$ buck run :sample1

【讨论】:

【解决方案2】:

调用 CMake 会破坏再现性,因此它不是最佳方法。相反,请尝试以下方法:

  1. fork 使用 CMake 构建的项目。
  2. 调用 CMake 生成任何头文件。
  3. 将头文件保存在项目的某处(例如/cmake-generated)。
  4. 为 CMake 生成的头文件创建一个仅包含头文件的库。
  5. 使用 Buck 构建项目的其余部分,具体取决于 CMake 库。
  6. 将所有内容提交给 Git。
  7. 对您需要的每个目标重复第 2 步。

这不如 Buck 的真正移植,但您可以获得一次性手动步骤的大部分好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2011-09-30
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多