LINUX.ORG.RU

[help][Makefile]обработка всех файлов в директории файлов

 ,


0

0

проблема - программа собирается из нескольких фалов, хотелось бы не собирать их кучей, а сформировать для каждого из них отдельный таргет, можно ли использовать для этого wildcards? Если можно, то какие?

все c-файлы располагаюся в одной директории

anonymous

Makefile+flymake(emacs):

include config
.PHONY: check-syntax
LDFLAGS= -O3 -Wall -g -lpopt

SRC_DIR = .
OBJ_DIR = ./obj
DEPS =$(OBJ_DIR)/*.d

all: createdirs proofconcept


#files
CPP = #(wildcards $(SRC_DIR))
OBJ = $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(CPP))

dirs = $(SRC_DIR)
search = $(addsuffix /*.cpp, $(dirs))
VPATH = $(dirs)
PREPROCESSOR = BLA=20


$(OBJ_DIR)/%.o: %.cpp
$(CXX) -MMD -MP -MF "$(OBJ_DIR)/$*.d" $(CXXFLAGS) $(FLAGS) -c -o "$(OBJ_DIR)/$*.o" $(addprefix -I,$(INCLUDE)) $(addprefix -D,$(PREPROCESSOR)) $<

proofconcept: $(addprefix $(OBJ_DIR)/,$(notdir $(patsubst %.cpp,%.o,$(wildcard $(search)))))
$(CXX) $(LDFLAGS) -o $@ $^

createdirs:
@-mkdir -p $(OBJ_DIR)

clean:
@-rm -rf $(OBJ_DIR)
@-rm -f proofconcept


check-syntax:
gcc -o nul -Wall -S $(CHK_SOURCES)

include $(wildcard $(DEPS))


Ну а в config, что то типа того:
export CFLAGS = -g
export CC = $(HOST)gcc
export CXX = $(HOST)g++ $(CFLAGS)

Для С просто расширения .cpp на .c поменяй в Makefile, либо добавь еще одну переменную по типу CPP

acefsm
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.