无法为GNU-make中的变量分配文件名列表

问题描述 投票:1回答:2

[这里是第一篇文章,不是以英语为母语的人,很高兴发表文章并帮助他人!

我在使用make来为我编译avr-gcc项目时遇到问题。更具体地说,是将不同目录的* .c源文件列表(在我的情况下为子目录)分配给make中的变量,该变量将用于生成依赖项。

使用我发现的This方法,Renaud Pacalet使用以下语法:

SRC = $(shell find src/ -name "*.cpp")

在我的情况下,使用find命令如下:

SOURCE_FILES = $(shell find -name '*.c')

结果是(在cmd上:)>

C:\AVR_projetos\Balizar_reserva>find -name '*.c'
./main.c
./modules/i2c/i2c.c
./modules/rom/rom.c

但是,当make调用shell来执行脚本时,该变量仅保存序列中的第一个文件名。

到目前为止,我尝试过:

  • 使用$(通配符* .c)函数,同样的问题
  • 使用$(shell echo * .c),同样的问题
  • 使用额外的参数-print0到-find强制执行嵌入式输出,仍然没有输出
  • 使用$(shell find(path)-name'* .c'),使用指向主目录的绝对路径,相对../以及所有其他参数,并结合使用
  • 此外,我已经参考了这两个手册页:

  • 这是我的文件目录:Image

  • 还有我的make文件(因为我想实现此文件,所以它在整个地方):Paste bin

  • 为了记录,在遇到这个问题之前我遇到了一个问题:

avr-gcc -MM main.c > depend.d
  0 [main] sh 14484 sync_with_child: child 15780(0x1DC) died before initialization with status code 0xC0000142
158 [main] sh 14484 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable make: *** [depend] Error 128

我发现This fix可以正常工作。

  • Os:Windows 10 Professional 1903 comp。 18362.535

  • GNU-make:3.81

[这里是第一篇文章,不是以英语为母语的人,很高兴张贴并帮助他人!我在使用make为我编译avr-gcc项目时遇到问题。更具体地说,是分配* .c源的列表...

c makefile dependency-management avr
2个回答
0
投票

欢迎您,正如您提到的,您指的是通配符功能,但说明中说:


0
投票

感谢大家的建议,我真的很感谢。使用以下命令使该死的东西正常工作:

© www.soinside.com 2019 - 2024. All rights reserved.