将 CMake 项目集成到 Buck 中的最佳方式是什么?
What is the best way to integrate a CMake project into Buck?
我在自己的 C++ 项目中使用 Buck,但我依赖于使用 CMake 构建的第三方库。 CMake 文件很复杂,所以我认为在 Buck 中重新创建他们的 CMake 文件不切实际。相反,我想从 Buck 调用 CMake。
从 Buck 调用 CMake 的最佳方式是什么?
我应该如何构建我的项目以尽量减少麻烦?
我的建议是使用 genrule 和 prebuilt_cxx_library。
这是我使用 Google Test 的 Buck 研究项目:
https://github.com/ar90n/lab/tree/master/sandbox/buck-study/gtest
该项目包含两个 Buck 文件。一个 (./gtest/BUCK
) 用于获取和构建 Google 测试。另一个 (./BUCK
) 用于构建和 运行ning 测试程序。
如果你想构建和运行这个项目,请执行以下命令,
$ buck fetch //gtest:googletest-src
$ buck build :sample1
$ buck run :sample1
调用 CMake 会破坏重现性,因此这不是最佳方法。相反,请尝试以下操作:
- fork 使用 CMake 构建的项目。
- 调用 CMake 生成任何头文件。
- 将头文件保存在项目中的某个位置(例如
/cmake-generated
)。
- 为 CMake 生成的头文件创建一个仅包含头文件的库。
- 根据 CMake 库,使用 Buck 构建项目的其余部分。
- 将所有内容提交给 Git。
- 为您需要的每个目标重复步骤 2。
这不如真正的 Buck 端口好,但您可以通过一次性手动步骤获得大部分好处。
我在自己的 C++ 项目中使用 Buck,但我依赖于使用 CMake 构建的第三方库。 CMake 文件很复杂,所以我认为在 Buck 中重新创建他们的 CMake 文件不切实际。相反,我想从 Buck 调用 CMake。
从 Buck 调用 CMake 的最佳方式是什么?
我应该如何构建我的项目以尽量减少麻烦?
我的建议是使用 genrule 和 prebuilt_cxx_library。
这是我使用 Google Test 的 Buck 研究项目: https://github.com/ar90n/lab/tree/master/sandbox/buck-study/gtest
该项目包含两个 Buck 文件。一个 (./gtest/BUCK
) 用于获取和构建 Google 测试。另一个 (./BUCK
) 用于构建和 运行ning 测试程序。
如果你想构建和运行这个项目,请执行以下命令,
$ buck fetch //gtest:googletest-src
$ buck build :sample1
$ buck run :sample1
调用 CMake 会破坏重现性,因此这不是最佳方法。相反,请尝试以下操作:
- fork 使用 CMake 构建的项目。
- 调用 CMake 生成任何头文件。
- 将头文件保存在项目中的某个位置(例如
/cmake-generated
)。 - 为 CMake 生成的头文件创建一个仅包含头文件的库。
- 根据 CMake 库,使用 Buck 构建项目的其余部分。
- 将所有内容提交给 Git。
- 为您需要的每个目标重复步骤 2。
这不如真正的 Buck 端口好,但您可以通过一次性手动步骤获得大部分好处。