Я пытаюсь получить некоторый практический опыт работы с GN, но некоторая часть поведения все еще неясна для меня.
В настоящее время у меня есть следующее дерево каталогов:
root/
- .gn
- gnbuild/
- BUILDCONFIG.gn
- (other .gni files)
- test/
- BUILD.gn
Iнастроил точечный файл так, чтобы он принимал 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, так как не до конца понимаю, зачем это нужно исполняемой цели.