5

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

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

我应该如何构建我的项目以最大程度地减少头痛?

4

2 回答 2

3

我的建议是使用 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
于 2017-05-16T01:18:08.190 回答
0

调用 CMake 会破坏可重复性,因此它不是最好的方法。相反,请尝试以下操作:

  1. Fork 使用 CMake 构建的项目。
  2. 调用 CMake 生成任何头文件。
  3. 将头文件保存在项目中的某处(例如/cmake-generated)。
  4. 创建由 CMake 生成的头文件的仅头文件库。
  5. 根据 CMake 库,使用 Buck 构建项目的其余部分。
  6. 将所有内容提交给 Git。
  7. 对您需要的每个目标重复步骤 2。

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

于 2017-08-14T18:04:03.323 回答