#2
Devil_W2010-02-22 15:15
-BASH-4.0.35$ cat ~/linux/test_c++/Makefile cc=gcc CC=g++ LD=ld OBJ=outcome LIB=-lc -lpcrecpp -lpthread CFLAGE= -g3 LDFLAGE= SRC_DIR=./src/ INC_DIR=-I./include/ INC_LIB=-L./lib/ BIN_DIR=./bin/ SO_DIR=./lib/ SO_OBJ_SRC= ./lib/common.o \ ./lib/BigInteger.o\ ./lib/bigint.o SO_OBJ=libcommon.so A_OBJ=libcommon.a A_DIR=./lib/ all: clean MKDIR $(BIN_DIR)$(OBJ) @cp $(BIN_DIR)$(OBJ) ./ @cp $(SO_DIR)$(SO_OBJ) ./ MKDIR: @[ -d $(SO_DIR) ] || mkdir -p $(SO_DIR) @[ -d $(BIN_DIR) ] || mkdir -p $(BIN_DIR) $(BIN_DIR)$(OBJ):$(SO_DIR)main.o $(SO_OBJ_SRC) # ar cr $(SO_DIR)libcommon.a $(SO_OBJ_SRC) # $(CC) $(CFLAGE) $(LDFLAFGE) -o $@ $< $(A_DIR)$(A_OBJ) $(CC) -g -shared -o $(SO_DIR)$(SO_OBJ) $(SO_OBJ_SRC) -lc $(CC) $(CFLAGE) $(INC_LIB) -lcommon -o $@ $< $(LIB) $(SO_DIR)%.o:$(SRC_DIR)%.cpp $(CC) -fPIC $(CFLAGE) $(INC_DIR) -c $< -o $@ $(LIB) $(SO_DIR)%.o:$(SRC_DIR)%.c $(cc) -fPIC $(CFLAGE) $(INC_DIR) -c $< -o $@ $(LIB) clean: @rm -rf $(SO_DIR)*.o @rm -rf $(SO_DIR) @[ ! -f $(SO_DIR)*.so ] || rm -rf $(SO_DIR)*.so @[ ! -f $(BIN_DIR)$(OBJ) ] || rm $(BIN_DIR)$(OBJ) @[ ! -d $(BIN_DIR) ] || rm -rf $(BIN_DIR) @[ ! -d $(SO_DIR) ] || rm -rf $(SO_DIR) @[ ! -f $(SO_OBJ) ] || rm $(SO_OBJ) install: @make -f Makefile @ cp $(BIN_DIR)* ./ uninstall: rm ./bin/$(OBJ) rm $(OBJ) rm $(SO_DIR)$(SO_OBJ) rm $(SO_DIR)* package: tar cvjf ../test_c++.tar.gz ../test_c++ removepackage: rm ../test_c++.tar -BASH-4.0.35$ Here is one of the sample Makefiles in my project. you may have a check. |
makefile
文件夹a : a.h a.cpp
文件夹b : b.cpp
Makefile的内容:
VPATH = a :b
proc : a.o b.o
g++ -o proc a.o b.o
a.o : a.h a.cpp
g++ -c a.cpp
b.o : b.cpp
g++ -c b.cpp
make后提示找不到a.cpp 为什么?写法错在哪里?