OS algılama makefile | Netgez.com
SORU
3 NÄ°SAN 2009, Cuma


OS algılama makefile

Ben rutin birkaç farklı bilgisayarlar ve Mac OS X, Linux, Solaris birçok farklı işletim sistemleri üzerinde çalışır. Proje üzerinde çalışıyorum, uzaktan git deposundan kodumu çekin.

Benim projeler üzerinde çalışmak mümkün yanındayım ne olursa olsun. Şimdiye kadar, makefile bilgisayarlar geçiş her zaman değiştirerek OS değişiklikleri etrafında almak için iki yol buldum. Ancak, bu can sıkıcı ve baş ağrısı bir sürü neden olur.

Nasıl kullanıyorum bunu algılar ve buna göre sözdizimi değiştirir, böylece benim makefile değiştirebilir miyim?

Burada 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

CEVAP
23 AÄžUSTOS 2012, PERÅžEMBE


Zaten çok güzel cevaplar var, ama her ikisi de) daha kapsamlı bir örnek paylaşmak istedim uname Windows üzerinde var olduğunu varsayalım ve b yok) ayrıca işlemci algılar. Bu CCFLAGS burada tanımlanmış pek tavsiye veya ideal değil; sadece hangi otomatik algılama OS/CPU ekleme olduğum proje kullanmak için neler yapıyorlar.

ifeq ($(OS),Windows_NT)
    CCFLAGS  = -D WIN32
    ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
        CCFLAGS  = -D AMD64
    endif
    ifeq ($(PROCESSOR_ARCHITECTURE),x86)
        CCFLAGS  = -D IA32
    endif
else
    UNAME_S := $(shell uname -s)
    ifeq ($(UNAME_S),Linux)
        CCFLAGS  = -D LINUX
    endif
    ifeq ($(UNAME_S),Darwin)
        CCFLAGS  = -D OSX
    endif
    UNAME_P := $(shell uname -p)
    ifeq ($(UNAME_P),x86_64)
        CCFLAGS  = -D AMD64
    endif
    ifneq ($(filter †,$(UNAME_P)),)
        CCFLAGS  = -D IA32
    endif
    ifneq ($(filter arm%,$(UNAME_P)),)
        CCFLAGS  = -D ARM
    endif
endif

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • kev5124

    kev5124

    9 Kasım 2008
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011