GN需要//BUILD.gn才能使可执行目标在子目录中工作?

时间:2019-06-20 19:44:01

标签: build build-system gn

我正在尝试获得有关GN的动手经验,但某些行为对我来说仍然很模糊。

我目前有以下目录树:

root/
  - .gn
  - gnbuild/
    - BUILDCONFIG.gn
    - (other .gni files)
  - test/
    - BUILD.gn

我配置了点文件,以便它将test / BUILD.gn用作根配置:

# .gn
buildconfig = "//gnbuild/BUILDCONFIG.gn"
root = "//test:my_root"

现在我在test / BUILD.gn中有我的工具链声明和可执行文件声明,如下所示:

# test/BUILD.gn
my_toolchain_template("a_toolchain") {
  ...
}

executable("foo_exec") {
  sources = ["foo.cc"]
}

group("my_root") {
  deps = [":foo_exec(:a_toolchain)"]
}

现在,似乎GN不喜欢可执行文件声明。 (还有另一条未使用的虚拟工具链,它存在是因为我在弄弄它,但它不应改变结果)。

~/root$ gn gen -v out
Using source root ~/root/
Got dotfile ~/root/.gn
Using build dir //out/
Loading //gnbuild/BUILDCONFIG.gn
Loading //test/BUILD.gn
Running //test/BUILD.gn with toolchain //:fake_toolchain
Loading //gnbuild/toolchain.gni (referenced from //test/BUILD.gn:25)
Defining config //test:conf_default(//:fake_toolchain)
Defining toolchain //test:host_tc_default
Defining target //test:test_executable(//:fake_toolchain)
Defining target //test:test_exe_dump(//:fake_toolchain)
Defining target //test:test_root(//:fake_toolchain)
Loading //BUILD.gn (referenced from //test/BUILD.gn:36)
ERROR at //test/BUILD.gn:36:1: Unable to load "~/root/BUILD.gn".
executable("test_executable") {
^------------------------------

有人可以阐明这种行为吗?我想避免添加一个空的root / BUILD.gn,因为我不完全理解可执行目标为什么需要它。

0 个答案:

没有答案