[问题]关于如何编译不同目录下的CPP文件
发表于 : 2008-07-03 10:56
目前在学CPP,遇到一个问题。问题如下:
一个主程序有若干个函数,分别命名为:a1.cpp, a2.cpp, b1.cpp, b2.cpp, 对应头文件a1.h, a2.h, b1,h, b2.h 及主程序main.cpp。 并且所有文件都包含了a1.cpp中定义的数据结构,
a2.cpp中的函数被 b1,b2 调用,
b1,b2 独立;
main 只调用b2。
其中以a 开头的四个文件放在../test/a/ 下,其余文件放在 ../test/b/ 下,测试数据为在 ../test/data/data1, 那么这时候的Makefile 应该怎么写? 如下我写的Makefile
当前运行目录为: ../test/b$
请高手帮我指出问题,因为我的编译器一直提示我找不到a1的数据类型。谢谢, 等我把这本书搞定了,好好的搞搞MAKE 和 bash script, 还有一个R。
一个主程序有若干个函数,分别命名为:a1.cpp, a2.cpp, b1.cpp, b2.cpp, 对应头文件a1.h, a2.h, b1,h, b2.h 及主程序main.cpp。 并且所有文件都包含了a1.cpp中定义的数据结构,
a2.cpp中的函数被 b1,b2 调用,
b1,b2 独立;
main 只调用b2。
其中以a 开头的四个文件放在../test/a/ 下,其余文件放在 ../test/b/ 下,测试数据为在 ../test/data/data1, 那么这时候的Makefile 应该怎么写? 如下我写的Makefile
当前运行目录为: ../test/b$
代码: 全选
CXX = g++
CC = g++
CXXFLAG = -I ../a/
all: main
a1.o: ../a/a1.cpp ../a/a1.h
$(CXX) $(CXXFLAG) -c ../a/a1.cpp
a2.o: ../a/a2.cpp ../a/a2.h
$(CXX) $(CXXFLAG) -c ../a/a2.cpp
b1.o: b1.cpp b1.h ../a/a1.h ../a/a2.h
b2.o: b2.cpp b2.h ../a/a1.h ../a/a2.h
main.o: main.cpp b2.h ../a/a1.h
main: main.o a1.o a2.o b1.o b2.o
run: all
./main <../data/data1
clean:
rm -f *.o core main