我尝试使用依赖于此错误的makefile编译带有依赖项的c文件:
Compiling tpc_lqe.o ...
/cygdrive/c/Sandbox/ZigBee/Tools/ba-elf-ba2/bin/ba-elf-gcc -c -o tpc_lqe.o
[some -options]
-I/cygdrive/c/Sandbox/ZigBee/Components/TPC/Include
-I/cygdrive/c/Sandbox/ZigBee/Components/TPC/Source
-I/cygdrive/c/Sandbox/ZigBee/Components/AppApi/Include
-I/cygdrive/c/Sandbox/ZigBee/Components/Common/Include
-I /cygdrive/c/Sandbox/ZigBee/Components/TPC/Source/tpc_lqe.c -MD -MF tpc_lqe.d -MP
ba-elf-gcc: no input files
make: *** [tpc_lqe.o] Error 1
Makefile:138: recipe for target 'tpc_lqe.o' failed
我看到other questions关于同样的错误,但我无法解决这个问题。
这是导致错误的makefile行,请指出是否缺少某些上下文:
%.o: %.c
$(info Compiling $@ ...)
$(CC) -c -o $*.o $(CFLAGS) $(INCFLAGS) $< -MD -MF $*.d -MP
更新:
我没有包含指定变量(包含库的路径),这导致以下包含该变量(INCFLAGS)以包含空格。此空白区域最终出现在-I选项中,从而返回错误。
一旦定义了变量,一切都顺利进行。
答案 0 :(得分:2)
INCFLAGS
看起来很糟糕,因为编译器调用有一个“裸”-I
,没有紧随其后的值,这会导致gcc将下一个参数(源文件名)解释为该参数:
[...] -I /cygdrive/c/Sandbox/ZigBee/Components/TPC/Source/tpc_lqe.c
^
|
???