c*********n 发帖数: 128 | 1 给C++程序的写的Makefile,冒号后面一般带上 .h 文件么?
如果不带上怎么知道冒号前面的这个object 依赖于后面的 .h 文件呢?
比如有时候,可能我写一个很小的object比如叫A,只有A.h文件,没有A.cpp文件。
如果.h文件列在冒号后面,那是不是在下面编译命令的语句里面就不能用"$?"这个
macro了?
否则就回发生 g++ *.h的错误? |
l***g 发帖数: 1035 | 2 are different files
【在 c*********n 的大作中提到】 : 给C++程序的写的Makefile,冒号后面一般带上 .h 文件么? : 如果不带上怎么知道冒号前面的这个object 依赖于后面的 .h 文件呢? : 比如有时候,可能我写一个很小的object比如叫A,只有A.h文件,没有A.cpp文件。 : 如果.h文件列在冒号后面,那是不是在下面编译命令的语句里面就不能用"$?"这个 : macro了? : 否则就回发生 g++ *.h的错误?
|
c*********n 发帖数: 128 | 3
Yes, I know that.
Let's say you have three files:
A.h, B.cpp, B.h
you include A.h in B.h, (and of course you include B.h in B.cpp)
then how do you write a Makefile to compile B.cpp?
I know this is probably very basic question, but I am a real rookie......
【在 l***g 的大作中提到】 : are different files
|
b******n 发帖数: 592 | 4 写明对.h的依赖关系的好处是,如果.h文件比较新,make就知道哪些东西应该重新编译
。如果仅仅是针对编译命令的话,.h不需要任何显式的处理的
【在 c*********n 的大作中提到】 : 给C++程序的写的Makefile,冒号后面一般带上 .h 文件么? : 如果不带上怎么知道冒号前面的这个object 依赖于后面的 .h 文件呢? : 比如有时候,可能我写一个很小的object比如叫A,只有A.h文件,没有A.cpp文件。 : 如果.h文件列在冒号后面,那是不是在下面编译命令的语句里面就不能用"$?"这个 : macro了? : 否则就回发生 g++ *.h的错误?
|
c*********n 发帖数: 128 | 5 So it should be like that?
B : B.cpp A.h
$(G++) B.cpp -o $@
【在 b******n 的大作中提到】 : 写明对.h的依赖关系的好处是,如果.h文件比较新,make就知道哪些东西应该重新编译 : 。如果仅仅是针对编译命令的话,.h不需要任何显式的处理的
|
b******n 发帖数: 592 | 6 可以
【在 c*********n 的大作中提到】 : So it should be like that? : B : B.cpp A.h : $(G++) B.cpp -o $@
|
l***g 发帖数: 1035 | 7 you don't need to write a rule for header files.
#include can be treated as literally. If a header file changes, source will
be recompiled though the source itself doesn't have a different time stamp.
it's compiler's job, you don't need to do it.
【在 c*********n 的大作中提到】 : So it should be like that? : B : B.cpp A.h : $(G++) B.cpp -o $@
|
t****t 发帖数: 6806 | 8 你用的什么先进make/compiler,这么聪明
will
.
【在 l***g 的大作中提到】 : you don't need to write a rule for header files. : #include can be treated as literally. If a header file changes, source will : be recompiled though the source itself doesn't have a different time stamp. : it's compiler's job, you don't need to do it.
|
c*********n 发帖数: 128 | 9 我的理解是,make是一个很简单的程序,检查冒号后面的文件有没有更新,如果有,则
执行下面的命令语句,所以跟compiler没有关系。
will
.
【在 l***g 的大作中提到】 : you don't need to write a rule for header files. : #include can be treated as literally. If a header file changes, source will : be recompiled though the source itself doesn't have a different time stamp. : it's compiler's job, you don't need to do it.
|
l***g 发帖数: 1035 | 10 enah.. i was wrong. just tested out gmake with gcc on linux |
d****2 发帖数: 6250 | 11 oops, found this forum for the first time.
Let's say you have three files:
A.h, B.cpp, B.h
you include A.h in B.h, (and of course you include B.h in B.cpp)
then how do you write a Makefile to compile B.cpp? |