我想在我的bazel项目中使用一个第三方库。截至目前,库只能用CMake系统构建。我通过http_archive规则获取库的源代码,并使用rules_foreign_cc的cmake规则在我的项目中构建它。由于库只兼容cmake,所以我认为这是在bazel项目中构建它的最快方法,没有修改任何东西。我的构建失败了,因为它抱怨在第三方库的CMakeLists.txt中没有指定cmake_minimum_required。我如何以某种方式将这一额外的行修补到远程CMakeLists.txt?有办法吗?
我把它取出来是这样的:
http_archive(
name = "third_party_cmake_lib",
build_file_content = all_content,
strip_prefix = "prefix",
urls = ["https://github.com/third_party_cmake_lib"],
)
字符串
在我的项目的bazel BUILD文件中:
load("@rules_foreign_cc//foreign_cc:cmake.bzl", "cmake")
cmake(
name = "third_party_lib",
generate_args = ["-GNinja"],
lib_source = "@third_party_lib//:all",
out_static_libs = ["libthird_party_lib.a"], )
型
我可以在bazel BUILD文件中设置cmake_minimum_required并告诉它将其修补到第三方库的CMakeLists.txt吗?
1条答案
按热度按时间tquggr8v1#
使用
http_archive
规则的patch_cmd
属性。http_archive
规则的属性patch_cmds
可以用来执行一些随机shell命令。这可以用来将文件从一个目录移动到根目录或任何其他你想要应用的更改(例如添加最低CMake版本):您还可以使用
patch_cmds_win
为Windows构建使用不同的命令:字符串
在此网站上搜索
patch
,以获取有关修补现有归档的不同选项的详细信息。