我正在尝试将大量文件(.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代码,所以它必须具有一定的相关性。
答案 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