make的一个奇怪问题
有一个简单的makefile如下:
test : test.cpp ThreadPool.so
g++ -o test -L. test.cpp -lThreadPool;
ThreadPool.so : ThreadPool.h ThreadPool.cpp
# g++ -c ThreadPool.h
g++ -shared -o libThreadPool.so ThreadPool.cpp -lpthread;
以上makefile可以正常执行,ThreadPool.h里声明了一个类,ThreadPool.cpp中实现它。但是,当我同时修改ThreadPool.h和ThreadPool.cpp中的类成员变量名称时,编译就说哪个变量没有定义。但是如果我执行了那句注释掉的g++ -c ThreadPool.h,即重新编译一下ThreadPool.h就行了。为什么?
我以为.h文件没必要重新编译一遍的呢。请大侠指点。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
知道了,以前用g++ -c ThreadPool.h时生成了一个名为ThreadPool.h.gch的中间文件,把它删除就行,就不用在makefile里写g++ -c ThreadPool.h了。