操作系统检测makefile我经常在几台不同的计算机和几种不同的操作系统上工作,这些操作系统是Mac OS X,Linux或Solaris。对于我正在进行的项目,我从远程git存储库中提取代码。无论我在哪个终端,我都希望能够处理我的项目。到目前为止,我已经找到了通过每次切换计算机时更改makefile来绕过操作系统更改的方法。然而,这是乏味的,并引起一堆头痛。如何修改我的makefile,以便它检测我正在使用哪个操作系统并相应地修改语法?这是makefile:cc = gcc -gCC = g++ -gyacc=$(YACC)lex=$(FLEX)all: assemblerassembler: y.tab.o lex.yy.o
$(CC) -o assembler y.tab.o lex.yy.o -ll -l yassembler.o: assembler.c
$(cc) -o assembler.o assembler.cy.tab.o: assem.y
$(yacc) -d assem.y
$(CC) -c y.tab.clex.yy.o: assem.l
$(lex) assem.l
$(cc) -c lex.yy.cclean:
rm -f lex.yy.c y.tab.c y.tab.h assembler *.o *.tmp *.debug *.acts
3 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
我现在认为这个答案已经过时了。我发布了一个新的完美解决方案。
如果您的makefile可能在非Cygwin Windows上运行,则uname
可能无法使用。这很尴尬,但这是一个潜在的解决方案。您必须首先检查Cygwin以排除它,因为它的PATH
环境变量中也有WINDOWS 。
ifneq (,$(findstring /cygdrive/,$(PATH))) UNAME := Cygwinelseifneq (,$(findstring WINDOWS,$(PATH))) UNAME := Windowselse UNAME := $(shell uname -s)endifendif
添加回答
举报
0/150
提交
取消