C 生成文件:流不进入if循环

C 生成文件:流不进入if循环,c,linux,makefile,proc,C,Linux,Makefile,Proc,我正在尝试将大量文件(.pc pro*c代码、c代码和.h文件编译成一个exe)编译成一个exe 示例代码 请注意,制表符的位置是相应的。然而,在这里删除,而张贴 抱歉,已尝试修复缩进。。不过,我们现在会做得更好 请注意,行首的T表示制表符。 build :$(OBJS) T @if [ "$(EXE)" = "abc" ]; then \ T echodo `command`\ T elif [ "$(ORA_CLIENT_LIB)" = "shared" ]; then \ T e

我正在尝试将大量文件(.pc pro*c代码、c代码和.h文件编译成一个exe)编译成一个exe

示例代码

请注意,制表符的位置是相应的。然而,在这里删除,而张贴

抱歉,已尝试修复缩进。。不过,我们现在会做得更好

请注意,行首的T表示制表符。

build :$(OBJS)

T @if [ "$(EXE)" = "abc" ]; then \

T echodo  `command`\

T elif [ "$(ORA_CLIENT_LIB)" = "shared" ]; then \

T echodo $(CC) $(LDFLAGSSHRD) $(LIBPATHS)  -m64 -o $(EXE) $(OBJS) `cat $(ORACLE_HOME)/rdbms/lib/sysliblist ` $(LIBHOME)/libclntsh.so; \

T else \

T echodo $(CC) $(LIBPATH) -m64 -o $(EXE) $(OBJS) -L$(LIBPATH) $(PROLDLIB) $(AMOLIB) $(LIBHOME)/libclntsh. a ;\

T fi
变量ORA CLient Lib设置为shared。尽管如此,代码并没有进入elif块。我遗漏了什么吗

当我运行make时,我得到了错误

------/bin/sh: -c: line 4: syntax error: unexpected end of file
------make: *** [build] Error 2
已创建所有.o文件,但未创建exe。我不明白少了什么。
echodo是Oracle bin的一个文件。因为我正在编译ProC代码,所以它一定有一定的相关性

我来猜一猜

我猜
echodo
会回显它的所有参数,并将第一个参数作为命令执行,其余参数作为它执行的命令的参数

然而

echodo  --------
它回显
-----------
,然后尝试执行它。由于您不太可能有一个名为
-----------
的命令,因此您将得到一个错误


如果要回显字符串
-----------
,请使用普通的
echo
命令。

我希望在所有行上看到
\
s,但最后一行除外,如下所示:

build: $(OBJS)
        @if [ "$(EXE)" = "abc" ]; then \
        echo --------; \
        elif [ "$(ORA_CLIENT_LIB)" = "shared" ]; then \
        echodo $(CC) $(LDFLAGSSHRD) $(LIBPATHS)  -m64 -o $(EXE) $(OBJS) `cat $(ORACLE_HOME)/rdbms/lib/sysliblist ` $(LIBHOME)/libclntsh.so; \
        else \
        echodo $(CC) $(LIBPATH) -m64 -o $(EXE) $(OBJS) -L$(LIBPATH) $(PROLDLIB) $(AMOLIB) $(LIBHOME)/libclntsh.a; \
        fi

这是Makefile的一部分吗?你真的需要修正缩进/格式,它是不可读的。修正了缩进,先生。出于安全原因,我不得不从这里删除一些代码。“\”用在行尾。即使我没有得到Echodo是什么,但是它正在现有文件中使用。我看到它是oracle bin文件夹中的一个文件。所以它一定是一个与Pro*C相关的文件