
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.128] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте такой вопрос понадобилось спортировать на Linux программу. Она написана на С++ с использованием boost-а и ACE. И состоит из нескольких модулей. Вот make-файл сборки одного из модулей:
![]() ![]() (CXX):= g++ (CFLAGS):=-g parser:main.o parser_cmd.o parser_xml.o $(CXX) $(CFLAGS) -c main.cpp -lboost_thread-gcc41-mt-d-1_34_1 -lpthread $(CXX) $(CFLAGS) -c parser_cmd.cpp -lboost_thread-gcc41-mt-d-1_34_1 -lpthread $(CXX) $(CFLAGS) -c parser_xml.cpp -lboost_thread-gcc41-mt-d-1_34_1 -lpthread $(CXX) $(CFLAGS) -o parser main.o parser_cmd.o parser_xml.o -lboost_thread-gcc41-mt-d-1_34_1 -lpthread Вопрос в том как переписать make-файл что бы не указывать компиляцию каждого файла, что то типа ![]() ![]() (LIB)=-lboost_thread-gcc41-mt-d-1_34_1 (LIB)+=-lpthread (CFLAGS):=-g parser:main.o parser_cmd.o parser_xml.o $(CXX) $(CFLAGS) $(LIB) $^ -o $@ %.o: %.cpp $(CXX) $(CFLAGS) $(LIB) -c $< clean: rm *.o Правда этот вариант не работает. Уже год, как ни чего не писал под Linux, забыл, как make-файлы составлять. |
Сообщ.
#2
,
|
|
|
Цитата SL555 @ Вопрос в том как переписать make-файл что бы не указывать компиляцию каждого файла, что то типа А что у тебя в данном случае не работает? Попробуй написать такую инструкцию: ![]() ![]() %.o: %.cpp $(CC) $(CCFLAGS) -c $< -o $@ |
Сообщ.
#3
,
|
|
|
Держи мой. Исходники в ./Sources/
заголовки в ./Includes/ маке в ./ PROJ := $(word $(words $(subst /, ,$(CURDIR))),$(subst /, ,$(CURDIR))) OUTD := LIBS := /usr/local/lib SRCC := $(wildcard Sources/*.c) SRCX := $(wildcard Sources/*.cc) OBJS := $(patsubst %.cc,%.o,$(SRCX)) $(patsubst %.c,%.o,$(SRCC)) INC := Includes INCLUDES:= $(wildcard $(INC)/*.h) ARCH := CC := gcc -pipe CXX := g++ -pipe OPT := -O3 CFLAGS := $(OPT) -I$(INC) -Wall CXXFLAGS:= $(OPT) -I$(INC) -Wall LDFLAGS := ################# DO NOT EDIT BELOW THIS LINE ################ .SUFFIXES: .SUFFIXES: .o .h .cc .c %.o : %.cc %.h $(CXX) -c $(CXXFLAGS) $(CFLAGS) -o $@ $< %.o : %.cc $(CXX) -c $(CXXFLAGS) $(CFLAGS) -o $@ $< %.o : %.c %.h $(CC) -c $(CFLAGS) -o $@ $< %.o : %.c $(CC) -c $(CFLAGS) -o $@ $< $(OBJS) : Makefile default: all all : $(OBJS) $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $(OUTD)$(PROJ) $(ARCH) $(OBJS) $(LIBS) tags : etags $(SRCC) $(SRCX) $(INCLUDES) tree : touch .dep if test ! -d Sources; then mkdir Sources; fi if test ! -d Includes; then mkdir Includes; fi if test ! -f Sources/Makefile; then cp Makefile.qq Sources/Makefile; fi if test ! -f Includes/Makefile; then cp Makefile.qq Includes/Makefile; fi clean : /bin/rm -f $(OBJS) $(OUTD)$(PROJ)$(ARCH) core *~ *.bak Sources/*~ Includes/*~ *.oct ifeq ($(MAKECMDGOALS),depend) depend : makedepend -IIncludes -f.dep -- $(CFLAGS) -- $(SRCC) $(SRCX) else include .dep endif |