#---------------------------------------------------------------------- # Przyklad linkowania bibliotek systemu ROOT z wlasnym programem #---------------------------------------------------------------------- .SUFFIXES: .o .c .cxx .cpp .C .f .l .s .sh .h .a .cc #====================================================================== # Biblioteki ROOTa dla linkera PYTHIA8LOCATION = /storage/Sim/pythia8186 INCDIR=include LIBDIRARCH=lib/archive -include config.mk # 1) Jawnie: ## Sciezka to systemu ROOT - nalezy ja ustawic odpowiednio RPATH = $(ROOTSYS) RLIB= -L$(RPATH)/lib -lCore -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lMultiProc -pthread -lm -ldl -rdynamic -Wl,--no-as-needed $(ROOTGLIBS) -L$(PYTHIA8LOCATION)/$(LIBDIRARCH) -lpythia8 -llhapdfdummy #2) Niejawnie, przy uzyciu root-config #RLIB= `root-config --libs` #====================================================================== # Nazwa biezacego katalogu DIRNAME = ./ #====================================================================== # Nazwa rdzeniowa modulu programu NAME1 = gen # Pliki objectowe (po kompilacji) OBJT1 = $(NAME1).o # Pliki wykonawcze (po linkowaniu) EXEC1 = $(NAME1).x # Nazwa i opcje kompilatora CXX = g++ # 1) Jawnie #CXXFLAGS = -O -Wall -pthread -I$(RPATH)include # 2) Przy uzyciu root-config CXXFLAGS = -O2 -Wall -I$(PYTHIA8LOCATION)/$(INCDIR) `root-config --cflags` # Nazwa i opcje linkera LD = $(CXX) LDFLAGS = `root-config --ldflags` #CXXFLAGS = -O2 -Wall -std=c++11 `root-config --cflags` #EXTRALIBS += $(shell $(ROOTSYS)/bin/root-config --libs) #LDFLAGS += $(shell $(ROOTSYS)/bin/root-config --libs) #RLIB += $(shell $(ROOTSYS)/bin/root-config --libs) -L$(PYTHIA8LOCATION)/$(LIBDIRARCH) -lpythia8 -llhapdfdummy #============================================================================== # Kompilacja dla modulow z plikami naglowkowymi %.o: %.cxx %.h $(CXX) $(CXXFLAGS) -c $< # Kompilacja dla modulow bez plikow naglowkowych %.o: %.cxx $(CXX) $(CXXFLAGS) -c $< #============================================================================== .PHONY: all run clean tar all: ${EXEC1} #============================================================================== # Linkowanie ${EXEC1}: ${OBJT1} @echo 'dupa' $(LD) -o $@ $(LDFLAGS) $^ $(RLIB) #============================================================================== # Uruchamianie run: ${EXEC1} ./${EXEC1} #============================================================================== clean: (rm -f *.o *.a *~ *.exe *.x core lmap *.dvi *.aux *.log a.out) #============================================================================== tar: clean (cd ../; tar -cvzf $(DIRNAME).tar.gz $(DIRNAME) ) #============================================================================== # Wszelkie akcje jakie należy podjąć aby program zaprezentował swoje działanie: test: run @echo 'Test run finished' #==============================================================================