将CMake项目集成到Buck的最佳方法是什么?

时间:2016-12-06 12:12:27

标签: c++ build cmake buck

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

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

我应该如何构建我的项目以减少头痛?

2 个答案:

答案 0 :(得分:1)

我的建议是使用genrule和prebuilt_cxx_library。

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

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

如果要构建和运行此项目,请执行以下命令,

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

答案 1 :(得分:0)

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

  1. 分叉使用CMake构建的项目。
  2. 调用CMake生成任何头文件。
  3. 将标题文件保存在项目中的某个位置(例如/cmake-generated)。
  4. 创建由CMake生成的头文件的仅标头库。
  5. 使用Buck构建项目的其余部分,具体取决于CMake库。
  6. 将一切都交给Git。
  7. 对您需要的每个目标重复步骤2.
  8. 这不如Buck真正的端口好,但是你可以获得一次性手动步骤的大部分好处。