提问人:geek123 提问时间:10/13/2023 最后编辑:geek123 更新时间:10/13/2023 访问量:63
如果某些 .c 文件包含其他 .c 文件,我该如何构建shared_library?cc_binary规则中没有 hdrs
if some .c file include other .c file, what can i do to build a shared_library? There is no hdrs in the rules of cc_binary
问:
我的项目之前是用cmake编译的,我想使用bazel来重建我的项目,但是发生了一些错误。 有一个包含以下代码的 .c 文件
#define XXX
#include "ABC.c"
#undef XXX
有一个问题。
如果我想编译一个动态库, 我应该把这个文件放在cc_binary的什么地方?cc_binary中没有hdrs,但是我不能把这个文件放在srcs中,因为ABC.c无法编译。
cc_binary(
name=""
srcs=[],
)
答:
2赞
Benjamin Peterson
10/13/2023
#1
使用 的属性:textual_hdrs
cc_library
cc_binary(
name = 'mylib.so',
linkshared = True,
deps = [':lib'],
)
cc_library(
name = 'lib',
srcs = ["source.c"],
textual_hdrs = ["include.c"],
alwayslink = True,
)
评论
0赞
geek123
10/14/2023
感谢您的帮助,但如果 A deps B,飞蛾就无法工作。我必须将 A 和 B 合并在一起吗
0赞
Benjamin Peterson
10/17/2023
A、B 和“飞蛾”的定义是什么?
0赞
geek123
10/17/2023
cc_binary( name = “mylibA.so” ) cc_library( name=A, deps=[:B] ) cc_library( name=B,....) )。看起来 mylibA.so 将缺少 B 的内容
0赞
Benjamin Peterson
10/17/2023
B 大概需要 。alwayslink = True
评论