gpt4 book ai didi

ada - gprbuild 项目文件中是否可以有文件通配符?

转载 作者:行者123 更新时间:2023-12-04 01:01:04 26 4
gpt4 key购买 nike

我有一个项目,我经常在其中的某个目录中创建许多新的主入口点 *.adb 文件。有什么方法可以使用 gprbuild 设置我的项目,以便添加新的主程序不需要编辑 .gpr 项目文件?
目前,我有这个,每次添加新电源时都需要修改电源列表:

project Adabots is

for Source_Dirs use ("src", "src/examples");

for Main use ("build_wall.adb", "remove_wall.adb", "get_stone.adb", "staircase_down.adb", "josephine.adb", "dig_cavern.adb", "build_maze.adb", "elevator.adb", "lovelace.adb", "dig_hallway.adb", "spiral_staircase.adb", "walk_up_stairs.adb");
但是我想做的只是说 src/examples 中的每个 .adb 文件应该作为主线处理。
The full project is here, in case that helps.

最佳答案

GPRBuild 项目文件的程序功能非常有限。您可以创建并附加到字符串,以及创建和附加到列表,仅此而已。
但是,您可以通过提供文件名作为场景变量来执行您想要的操作:

   Main_Names := external_as_list ("executables", ",");
for Main use Main_Names;
通过使用 external_as_list ,您可以在命令行上提供所有可执行文件的名称,以逗号分隔:
gprbuild adabots.gpr -Xexecutables=build_wall.adb,remove_wall.adb,get_stone.adb
现在您可以使用 shell globbing 来提供所有 *.adb src/examples 中的文件(使用 basename 去除 src/examples/ 路径;然后 tr 用逗号连接名称):
gprbuild adabots.gpr -Xexecutables=$(echo src/examples/*.adb | xargs -n 1 basename | tr '\n' ,)
这可以放在 Makefile 中,如下所示:
MAIN_SOURCES=$(shell echo src/*.adb | xargs -n 1 basename | tr '\n' ,)

all:
gprbuild -Xexecutables=$(MAIN_SOURCES)

%: src/%.adb
gprbuild -Xexecutables=$^
还要注意替换 gprbuildalr build如果您的项目正在使用 alire,则上述内容也有效。
对于构建单独的主程序,您可以执行例如 make foosrc/foo.adb .

关于ada - gprbuild 项目文件中是否可以有文件通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68269141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com