我经常在几台不同的计算机和几种不同的操作系统上工作,这些操作系统是Mac OS X,Linux或Solaris.对于我正在进行的项目,我从远程git存储库中提取代码.
无论我在哪个终端,我都希望能够处理我的项目.到目前为止,我已经找到了通过每次切换计算机时更改makefile来绕过操作系统更改的方法.然而,这是乏味的,并引起一堆头痛.
如何修改我的makefile,以便它检测我正在使用哪个操作系统并相应地修改语法?
这是makefile:
cc = gcc -g
CC = g++ -g
yacc=$(YACC)
lex=$(FLEX)
all: assembler
assembler: y.tab.o lex.yy.o
$(CC) -o assembler y.tab.o lex.yy.o -ll -l y
assembler.o: assembler.c
$(cc) -o assembler.o assembler.c
y.tab.o: assem.y
$(yacc) -d assem.y
$(CC) -c y.tab.c
lex.yy.o: assem.l
$(lex) assem.l
$(cc) -c lex.yy.c
clean:
rm -f lex.yy.c y.tab.c y.tab.h assembler *.o *.tmp *.debug *.acts
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Makefile 中执行一个简单的 if else 语句:
check:
if [ -z "$(APP_NAME)" ]; then \
echo "Empty" \
else \
echo "Not empty" \
fi
Run Code Online (Sandbox Code Playgroud)
当我执行时make check,出现以下错误:
if [ -z "" ]; then
/bin/bash: -c: line 1: syntax error: unexpected end of file
make: *** [check] Error 2
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
我知道我可以使用以下内容,但是在回声之后我有很多逻辑,所以我需要将它分布在多行中:
check:
[ -z "$(PATH)" ] && echo "Empty" || echo "Not empty"
Run Code Online (Sandbox Code Playgroud)