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

What is the best way to integrate a CMake project into Buck?

本文关键字:最佳 方法 是什么 Buck CMAKE 项目 集成      更新时间:2023-10-16

我正在为自己的C 项目使用buck,但我依靠使用CMAKE构建的第三方库。CMAKE文件很复杂,因此我认为将其CMAKE文件重新创建为Buck是不切实际的。相反,我想从Buck打电话给Cmake。

从Buck打电话的最佳方法是什么?

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

我的建议是使用genrule和prebuilt_cxx_library。

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

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

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

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

调用cmake将破坏可重复性,因此这不是最好的方法。而是尝试以下内容:

  1. 分叉用Cmake构建的项目。
  2. 致电cmake生成任何标头文件。
  3. 将标题文件保存在项目中的某个地方(例如/cmake-generated)。
  4. 创建CMAKE生成的标头文件的仅标头库。
  5. 根据cmake库来建立项目的其余部分。
  6. 将所有内容都投入git。
  7. 重复您需要的每个目标的步骤2。

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