操作系统检测makefile

操作系统检测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


月关宝盒
浏览 1465回答 3
3回答

慕尼黑8549860

我现在认为这个答案已经过时了。我发布了一个新的完美解决方案。如果您的makefile可能在非Cygwin Windows上运行,则uname可能无法使用。这很尴尬,但这是一个潜在的解决方案。您必须首先检查Cygwin以排除它,因为它的PATH环境变量中也有WINDOWS 。ifneq (,$(findstring /cygdrive/,$(PATH)))     UNAME := Cygwinelseifneq (,$(findstring WINDOWS,$(PATH)))     UNAME := Windowselse     UNAME := $(shell uname -s)endifendif
打开App,查看更多内容
随时随地看视频慕课网APP