■ソースと同階層のMakefile
#!/bin/make
TARGET = Sample01
SRCS = $(shell ls *.cpp)
OBJS = $(SRCS:.cpp=.o)
CXX = g++
CXXFLAGS = -g -O2 -Wall
LDFLAGS = -lm -lrt -L/Develop/lib -lCmnFunc
INCLUDE = -I../inc -I../../CmnInc
DEST = ../../../bin
.cpp.o:
$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
$(TARGET): $(OBJS)
$(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS)
cp $(TARGET) $(DEST)
clean:
$(RM) $(TARGET) $(OBJS)
$(RM) $(DEST)/$(TARGET)
◆ライブラリのmakefile
#!/bin/make
TARGET = libCmnFunc.so
SRCS = $(shell ls *.cpp)
OBJS = $(SRCS:.cpp=.o)
CXX = g++
CXXFLAGS = -g -O2 -Wall -fPIC
LDFLAGS = -lm -lrt -shared -Wl
INCLUDE = -I../../CmnInc
DEST = /Develop/lib/
.cpp.o:
$(CXX) $(CXXFLAGS) $(INCLUDE) -c $(SRCS)
$(TARGET): $(OBJS)
$(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS)
cp $(TARGET) $(DEST)
clean:
$(RM) $(TARGET) $(OBJS)
■上位階層のMakefile
#!/bin/make
MAKE = make --no-print-directory
SUBDIR = $(shell find ./*/src/ -type d)
all:
list='$(SUBDIR)'; for subdir in $$list; do \
$(MAKE) -C $$subdir; \
done
clean:
list='$(SUBDIR)'; for subdir in $$list; do \
$(MAKE) clean -C $$subdir; \
done