make的一个奇怪问题

发布于 2022-07-16 15:12:07 字数 735 浏览 16 评论 1

有一个简单的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在巴黎塔顶看东京樱花 2022-07-21 08:58:53

知道了,以前用g++ -c ThreadPool.h时生成了一个名为ThreadPool.h.gch的中间文件,把它删除就行,就不用在makefile里写g++ -c ThreadPool.h了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文