Bonjour,
Je suis en train d'etudier un compilateur particulier, qui s'appelle AspectC++ pour programmer oriente aspect, mais je ne pense pas que ma question demande de connaitre ce sujet-la.
Ce compilateur s'utilise sous Linux, et est donc fourni avec un Makefile et quelques exemples a compiler.
Je debute depuis quelques mois sur Linux, et ma question se porte sur le contenu du Makefile : dedans sont utilisees les variables CXXFLAGS et LDFLAGS, mais celles-ci ne sont definies nulle part dans le Makefile. J'ai cru comprendre (a confirmer ?) que dans ce cas elles sont definies par defaut avec les variables d'environnement. Mais je ne les trouve pas quand j'ecrisen ligne de commande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ env
Voici les fichiers Makefile (il y en a plusieurs) :
Makefile "racine" situe au meme niveau que le compilateur "aspect" :
Ce n'est pas ce Makefile qui est concerne, mais je le mets quand meme dans le doute...
(Remarque : ACXX ou ag++ correspond au compilateur aspect combine au compilateur g++, et ACFLAGS aux options de ag++)
Makefile "generique" (Makefile.generic) dans le dossier examples :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 ACFLAGS ?= -v1 -k ACXX ?= $(PWD)/ag++ export ACXX ACTESTS = $(filter-out Makefile%, $(filter-out CVS,$(notdir $(wildcard $(PWD)/examples/*)))) .PHONY: $(ACTESTS) all: testrun test: $(addsuffix .make, $(ACTESTS)) testrun: test $(addsuffix .run, $(ACTESTS)) clean: $(addsuffix .clean, $(ACTESTS)) %.make: % make -C examples/$< %.run: % make -C examples/$< run %.clean: % make -C examples/$< clean
C'EST CE MAKEFILE QUI EST CONCERNE ! -> dans $(PROG), $(JUNK)/%.o, et $(JUNK)/%.d
Un dernier Makefile qui est dans chaque repertoire examples/example_i, dans lesquels il y a les fichiers sources de l'exemple i a compiler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 CXX ?= g++ ACXX ?= ag++ PROG:=$(shell basename $$PWD) SOURCES := $(wildcard *.cc) JUNK := Junk OBJECTS := $(addprefix $(JUNK)/,$(patsubst %.cc,%.o,$(SOURCES))) DEPS := $(addprefix $(JUNK)/,$(patsubst %.cc,%.d,$(SOURCES))) HEADERS := $(wildcard *.h) ASPECTS := $(wildcard *.ah) INCLUDE_LIST := $(patsubst %.ah,-include %.ah,$(ASPECTS)) all: $(PROG) run: all ./$(PROG) $(PROG): $(OBJECTS) @echo Linking $@ @$(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) $(LDFLAGS) clean: @rm -rf *.o $(JUNK) $(PROG) $(JUNK)/%.o : %.cc @echo Compiling $< @$(ACXX) $(CXXFLAGS) -x c++ -c $< -o $@ $(JUNK)/%.d : %.cc @mkdir -p $(JUNK) @$(CXX) $(CXXFLAGS) -x c++ -MM $(INCLUDE_LIST) $< | \ sed -e "s/$*\.o/$(JUNK)\/& $(JUNK)\/$*.d/g" > $@ ifneq ($(MAKECMDGOALS),clean) -include $(DEPS) endif .PHONY: clean all # don't remove any intermediate files .SECONDARY:
Que peuvent donc contenir CXXFLAGS et LDFLAGS ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part include ../Makefile.generic
Partager