makefileテスト
1680 ワード
1,メインMakefile,Makefileが存在するディレクトリはmainのみである.cpp main2.cpp,および生成する.oファイルを./objディレクトリの下
2,Makefileから生成する.oファイルは、メインMakefileが存在するディレクトリの下にあるobjディレクトリにも配置する.cppファイル:testRead.cpp,testWrite.cpp
SOURCES = $(filter-out main2.cpp,$(wildcard *.cpp))
#make test:make -n
# ,
#SOURCES += $(wildcard ../src/*.cpp)
#c/c++
#AR=ar
#CXX=g++
#CC=cc
#AS=as
#CPP=$(CC) -E,C
#CFLAGS
#ASFLAGS
#ARFLAGS=rv
#CXXFLAGS
#CPPFLAGS
#LDFLAGS
OBJDIR = obj/
# $(patsubst %.cpp,%.o,$(filter-out main2.cpp,$(wildcard *.cpp)))
# $(patsubst %.cpp,%.o,$(SOURCES))
OBJS = $(SOURCES:.cpp=.o)
TARGET = h.out
all:$(TARGET)
# OBJS OBJDIR
$(TARGET):$(OBJS)
# TARGET shell
if [ ! -d $(OBJDIR) ]; then \
mkdir $(OBJDIR) ;\
fi
echo $(OBJDIR)
echo $(HOME)
$(MAKE) -C test2
g++ $(OBJDIR)$^ -o $@
$(filter-out main2.o,%.o):%.cpp
if [ ! -d $(OBJDIR) ]; then \
mkdir $(OBJDIR) ;\
fi
echo $(OBJDIR)
g++ -fPIC -c $< -o $(OBJDIR)$@
#test : make clean -n
clean:
$(MAKE) clean -C test2
-rm $(OBJDIR)$(OBJS)
-rm $(TARGET)
2,Makefileから生成する.oファイルは、メインMakefileが存在するディレクトリの下にあるobjディレクトリにも配置する.cppファイル:testRead.cpp,testWrite.cpp
SOURCES = $(wildcard *.cpp)
# $(patsubst %.cpp,%.o,$(wildcard *.cpp))
# $(patsubst %.cpp,%.o,$(SOURCES))
OBJS = $(SOURCES:.cpp=.o)
OBJDIR = ../obj/
TARGETDIR = ./
TARGETS = Read Write
all:Read Write
Read:$(filter %Read.o,$(OBJS))
echo $(OBJS)
g++ $(OBJDIR)$^ -o $(TARGETDIR)$@
Write:$(filter %Write.o,$(OBJS))
echo $(OBJS)
g++ $(OBJDIR)$< -o $(TARGETDIR)$@
# OBJS
$(OBJS):%.o:%.cpp
g++ -fPIC -c $< -o $(OBJDIR)$@
clean:
-rm $(addprefix $(OBJDIR),$(OBJS))
-rm $(addprefix $(TARGETDIR),$(TARGETS))