Make file:如果循环,则不输入Flow

时间:2013-01-29 10:20:57

标签: 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 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代码,所以它必须具有一定的相关性。

2 个答案:

答案 0 :(得分:0)

我会继续冒险猜测...

我猜测echodo回应其所有参数,并将第一个参数作为命令执行,其余参数作为其执行命令的参数。

然而在行

echodo  --------

它回显--------然后然后尝试执行它。因为你不太可能有一个名为--------的命令,你会收到一个错误。

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

答案 1 :(得分:0)

我期待在除了最后一行之外的所有行上看到\

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