在非源/库文件上添加cc_binary
依赖项通常是指在使用Bazel构建系统时,尝试将一个cc_binary
目标(编译后的二进制文件)作为依赖项添加到一个非源代码或库文件的目标上。这在Bazel中是不直接支持的,因为cc_binary
是用来生成可执行文件的,而不是作为库文件被其他目标依赖。
通常,将cc_binary
作为依赖项并不常见,因为它意味着一个可执行文件需要另一个可执行文件作为构建输入,这在逻辑上是不合理的。然而,如果你确实需要在构建过程中使用一个已编译的二进制文件,可以考虑以下替代方案:
cc_binary
或其他cc_library
依赖。如果你尝试在非源/库文件上添加cc_binary
依赖项,可能会遇到以下问题:
cc_binary
作为依赖项添加到非源代码目标上。如果你需要在构建过程中使用一个已编译的二进制文件,可以考虑以下解决方案:
将需要的代码编译成库文件:
cc_library(
name = "my_lib",
srcs = ["my_code.cc"],
)
然后在其他目标中依赖这个库:
cc_binary(
name = "my_binary",
srcs = ["main.cc"],
deps = [":my_lib"],
)
创建一个包含所需二进制文件的文件组:
filegroup(
name = "my_binary_file",
srcs = ["path/to/my_binary"],
)
然后在需要的地方引用这个文件组:
genrule(
name = "use_my_binary",
srcs = [":my_binary_file"],
outs = ["output.txt"],
cmd = "$(location :my_binary_file) > $@",
tools = [":my_binary_file"],
)
在这个例子中,genrule
使用了my_binary_file
中的二进制文件来生成output.txt
。
通过上述方法,你可以绕过直接在非源/库文件上添加cc_binary
依赖项的限制,同时保持构建逻辑的清晰和正确性。
领取专属 10元无门槛券
手把手带您无忧上云