0

我使用 gn 作为 make 系统,并且我有一个共享 libS,它依赖于 libA 和 libB,但我希望 libA 中的函数不链接到 libS(它将链接到 main),而函数 libB 链接到 libS。

我的问题是:

  1. 如果我对 libA 使用 deps 或 public deps,将添加包含路径(这是我想要的),但所有功能也将被链接(这不是我想要的)
  2. 如果我使用data_deps,函数将不会被链接(我想要),但也不会添加包含路径(不是我想要的)
4

1 回答 1

0

如果您只希望 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到链接行。

于 2022-02-06T15:40:22.493 回答