avatar
关于Makefile的一个问题# Programming - 葵花宝典
c*n
1
给C++程序的写的Makefile,冒号后面一般带上 .h 文件么?
如果不带上怎么知道冒号前面的这个object 依赖于后面的 .h 文件呢?
比如有时候,可能我写一个很小的object比如叫A,只有A.h文件,没有A.cpp文件。
如果.h文件列在冒号后面,那是不是在下面编译命令的语句里面就不能用"$?"这个
macro了?
否则就回发生 g++ *.h的错误?
avatar
l*g
2
are different files

【在 c*********n 的大作中提到】
: 给C++程序的写的Makefile,冒号后面一般带上 .h 文件么?
: 如果不带上怎么知道冒号前面的这个object 依赖于后面的 .h 文件呢?
: 比如有时候,可能我写一个很小的object比如叫A,只有A.h文件,没有A.cpp文件。
: 如果.h文件列在冒号后面,那是不是在下面编译命令的语句里面就不能用"$?"这个
: macro了?
: 否则就回发生 g++ *.h的错误?

avatar
c*n
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
avatar
b*n
4
写明对.h的依赖关系的好处是,如果.h文件比较新,make就知道哪些东西应该重新编译
。如果仅仅是针对编译命令的话,.h不需要任何显式的处理的

【在 c*********n 的大作中提到】
: 给C++程序的写的Makefile,冒号后面一般带上 .h 文件么?
: 如果不带上怎么知道冒号前面的这个object 依赖于后面的 .h 文件呢?
: 比如有时候,可能我写一个很小的object比如叫A,只有A.h文件,没有A.cpp文件。
: 如果.h文件列在冒号后面,那是不是在下面编译命令的语句里面就不能用"$?"这个
: macro了?
: 否则就回发生 g++ *.h的错误?

avatar
c*n
5
So it should be like that?
B : B.cpp A.h
$(G++) B.cpp -o [email protected]

【在 b******n 的大作中提到】
: 写明对.h的依赖关系的好处是,如果.h文件比较新,make就知道哪些东西应该重新编译
: 。如果仅仅是针对编译命令的话,.h不需要任何显式的处理的

avatar
b*n
6
可以

【在 c*********n 的大作中提到】
: So it should be like that?
: B : B.cpp A.h
: $(G++) B.cpp -o [email protected]

avatar
l*g
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 [email protected]

avatar
t*t
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.

avatar
c*n
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.

avatar
l*g
10
enah.. i was wrong. just tested out gmake with gcc on linux
avatar
d*2
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?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。