我使用 gn 作为 make 系统,并且我有一个共享 libS,它依赖于 libA 和 libB,但我希望 libA 中的函数不链接到 libS(它将链接到 main),而函数 libB 链接到 libS。
我的问题是:
- 如果我对 libA 使用 deps 或 public deps,将添加包含路径(这是我想要的),但所有功能也将被链接(这不是我想要的)
- 如果我使用data_deps,函数将不会被链接(我想要),但也不会添加包含路径(不是我想要的)
我使用 gn 作为 make 系统,并且我有一个共享 libS,它依赖于 libA 和 libB,但我希望 libA 中的函数不链接到 libS(它将链接到 main),而函数 libB 链接到 libS。
我的问题是:
如果您只希望 libS 具有 libA 的包含路径,则可以使用配置。
//path/to/libA/BUILD.gn
:
config("config") {
include_dirs = [ "include" ]
}
static_library("libA") {
public_configs = [ ":config" ]
sources = [ ... ]
# etc
}
//path/to/libS/BUILD.gn
:
shared_library("libS") {
configs = [ "//path/to/libA:config" ]
deps = [ "//path/to/libB" ]
}
这样 GN 将添加-Ipath/to/libA
到源代码的编译行中libS
,但不会添加任何内容libA
到链接行。