C++ GNU Make:如何在列表的每个条目前面添加选项
我有一个问题,我想创建一个如下所示的变量C++ GNU Make:如何在列表的每个条目前面添加选项,c++,c,makefile,gnu-make,C++,C,Makefile,Gnu Make,我有一个问题,我想创建一个如下所示的变量 INCDIRS = -I dir0 -I dir1 -Idir2 -I dir3 ... -I dirN 其中dir1,dirN是一些基本目录的所有子目录的名称,base\u dir 我如何建立这个变量?最初,我认为我可以做以下几件事 INCDIRS = $(shell for x in `find base_dir -type -d -print`; do echo -I $x; done;) 但这只会导致 INCDIRS = -I -I -I -
INCDIRS = -I dir0 -I dir1 -Idir2 -I dir3 ... -I dirN
其中dir1,dirN是一些基本目录的所有子目录的名称,base\u dir
我如何建立这个变量?最初,我认为我可以做以下几件事
INCDIRS = $(shell for x in `find base_dir -type -d -print`; do echo -I $x; done;)
但这只会导致
INCDIRS = -I -I -I -I ... -I
如果有人能解释如何做到这一点,或者解释为什么我的原始命令会得到它所能得到的输出,我将不胜感激。谢谢 您的
INCDIRS
作业中有两个错误。一个在find
命令中。它应该是find-typed-print
(或者只是find-typed
;这里的-print
是多余的)。另一个错误是使用$x
。您需要使用另一个$
来转义$
:
INCDIRS = $(shell for x in `find base_dir -type d -print`; do echo -I $$x; done;)
您的
INCDIRS
作业中有两个错误。一个在find
命令中。它应该是find-typed-print
(或者只是find-typed
;这里的-print
是多余的)。另一个错误是使用$x
。您需要使用另一个$
来转义$
:
INCDIRS = $(shell for x in `find base_dir -type d -print`; do echo -I $$x; done;)
您可以首先获取目录列表,然后在每个目录前面添加-I:
SOURCE_DIRS := $(shell find base_dir -type d -print)
INCDIRS = $(addprefix -I,$(SOURCE_DIRS))
如果您需要$(SOURCE\u DIRS)来做其他事情,那么这可能更好。您可以先获得目录列表,然后在每个目录前面添加-I:
SOURCE_DIRS := $(shell find base_dir -type d -print)
INCDIRS = $(addprefix -I,$(SOURCE_DIRS))
如果你需要$(SOURCE_DIRS)来做其他事情,那可能更好。嗨,Martega,如果这解决了你的问题,我认为David值得你将他的答案标记为接受答案。嗨,Martega,如果这解决了你的问题,我认为David值得你将他的答案标记为接受答案。谢谢,这是我一直在寻找的!谢谢,这是我一直在寻找的!始终使用
运行make--warn
。然后会告诉您Makefile:n:警告:未定义的变量“x”
。然后,在将错误的命令行传递给shell之前,您可能已经意识到,$x
是通过make扩展的(没有)。(您应该说…do echo-I$$x…
)始终使用--warn运行make。然后会告诉您Makefile:n:警告:未定义的变量“x”
。然后,在将错误的命令行传递给shell之前,您可能已经意识到,$x
是通过make扩展的(没有)。(你应该说…do echo-I$$x…
)