Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GNU Make:如何在列表的每个条目前面添加选项_C++_C_Makefile_Gnu Make - Fatal编程技术网

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…