注册 登录
编程论坛 Linux教室

Makefile打不开文件

邶风 发布于 2010-02-22 12:01, 932 次点击
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 为什么?写法错在哪里?
3 回复
#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.
#3
邶风2010-02-22 16:57
哦 就是把地址变成变量 ~~~ $(DIR)就可以了

那VPATH怎么办 我记得可以用这个设置路径的
#4
2010-05-04 17:32
你MAKEFILE文件写错了 当然找不到.cpp了!!!
1