操作系統檢測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
提交
取消