当前位置: 技术问答>linux和unix
关于修改.h文件以后,是否需要重新编译的问题
来源: 互联网 发布时间:2016-05-06
本文导语: 由于我的MAKEFILE的依赖行没有写的好, 只依赖于.cpp文件,没有依赖于.h文件。 所以经常修改了动态库的.h文件以后,需要make clean;make ;重新编译所有程序。 --------- 想请问一下,有的仁兄说,如果只是在动态库的.h...
由于我的MAKEFILE的依赖行没有写的好,
只依赖于.cpp文件,没有依赖于.h文件。
所以经常修改了动态库的.h文件以后,需要make clean;make ;重新编译所有程序。
---------
想请问一下,有的仁兄说,如果只是在动态库的.h文件中只是新增加函数,或新增加定义,没有修改旧函数的时候,可以不需要全部编译所有程序。不知道是否是正确的。
只依赖于.cpp文件,没有依赖于.h文件。
所以经常修改了动态库的.h文件以后,需要make clean;make ;重新编译所有程序。
---------
想请问一下,有的仁兄说,如果只是在动态库的.h文件中只是新增加函数,或新增加定义,没有修改旧函数的时候,可以不需要全部编译所有程序。不知道是否是正确的。
|
晕死,明明是需要重新编译的,不重新编译是有风险的
这个没有很好的解决方法,只能手工把.h文件加到makefile中去
如果使用了规则的甚至要写成这样
%.o:%.c a.h b.h
这时候麻烦就是修改了一个头文件会重新编译所有的源代码
如果只是在动态库的.h文件中只是新增加函数,或新增加定义,没有修改旧函数的时候,可以不需要全部编译所有程序。不知道是否是正确的。
这种说法直觉上有问题,不过一时也没想到什么太大的毛病,考虑以下情况
新增加一个定义在a.h中
#define debug 1
另外有个老的b.h中有以下内容
#ifdef debug
.....
那么包含了a.h和b.h的源文件都需要重新编译
就我个人意见,不重新编译是有风险的,重新编译所有包含了此头文件的源文件应该是必要的。
这个没有很好的解决方法,只能手工把.h文件加到makefile中去
如果使用了规则的甚至要写成这样
%.o:%.c a.h b.h
这时候麻烦就是修改了一个头文件会重新编译所有的源代码
如果只是在动态库的.h文件中只是新增加函数,或新增加定义,没有修改旧函数的时候,可以不需要全部编译所有程序。不知道是否是正确的。
这种说法直觉上有问题,不过一时也没想到什么太大的毛病,考虑以下情况
新增加一个定义在a.h中
#define debug 1
另外有个老的b.h中有以下内容
#ifdef debug
.....
那么包含了a.h和b.h的源文件都需要重新编译
就我个人意见,不重新编译是有风险的,重新编译所有包含了此头文件的源文件应该是必要的。
|
按1楼的说法你说的情况不存在,没有任何险
|
如果只改动a.h文件,且改动不对a.cpp造成影响, 对应的a.cpp文件应该是不需要重新编译的.
|
确实,无需再次编译,我的经验
|
理解了编译跟链接的不同就很好理解为什么不需要重新编译了。
|
直接automake ,这么费事,能看得懂Makefile就可以的了。过来人的意见。
|
反对
|
头文件更新,而这个头文件被C源文件包含的话,这些C源文件就要被重新编译,我觉得,不管是新增函数,还是修改函数,反正头文件是被改了
|
只要头文件的修改不影响到源文件,就可以不得新编译源文件而不管源文件是否包含了此头文件。