【makefile】:为何没有执行编译?

LeonTown 2011-02-25 02:29:11
我对makefile不熟。

情况是这样的:
有一个工程文件夹./project/

我把一些常用的代码,放到子目录utils下面:./project/utils/
然后,有个文件夹存放编译出来的lib:./project/libs/
同样还有个文件夹,存放lib的头文件:./project/headers/

应用工程置于另一个文件夹:./project/app/

/////////////////////////////////////////////////////////////////////////////

现在有util的头文件,实现文件,和makefile,如下组织:
./project/headers/utils.h //utils的头文件
./project/utils/utils.cc //其中写有:#include "../headers/utils.h",用于包含头文件

./project/utils/makefile内容如下:

commonUtils : commonUtils.o
ar cr lib_commonUtils commonUtils.o
mv lib_commonUtils ../libs/
rm commonUtils.o

commonUtils.o : utils.cc
g++ -o commonUtils.o -c utils.cc

//////////////////////////////////////////////////////////////////////////////

在应用文件夹下,有实现文件,和makefile,如下组织:
./project/app/app.cc //其中写有:#include "../headers/utils.h",包含头文件

./project/app/makefile内容如下:

Builds : app commonUtils

commonUtils :
cd ../utils && $(MAKE)

app : app.cc
g++ -o app app.cc -l ../libs/lib_commonUtils

/////////////////////////////////////////////////////////////////////////////////

现在的问题是:
当我修改了utils的代码后,
在./project/app目录下make时,提示找不到utils下的信息;
或者在./project/app目录下两次make后,才能显示出新的修改。

但当先到./project/utils/下make后,
再到./project/app下make,都能成功,并显示最新的运行效果。


我怀疑是不是我的makefile没有写好(确实很恶心),
导致了没有执行./project/utils下的makefile
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeonTown 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mstlq 的回复:]

引用 5 楼 leontown 的回复:
突然发现:
在./project/app下make时,
其输出竟然没有提示进入utils目录,

但是,其它设定的几个目录还是进去了。

为什么不去utils目录呢。。。

Builds : app commonUtils
改成
Builds : commonUtils app
有用吗?
猜的……
[/Quote]

目前来看,非常有用。。。
LeonTown 2011-02-25
  • 打赏
  • 举报
回复
又突然发现:
app目录下的makefile的“目标”的顺序很重要,
Builds : app commonUtils
应该改为:
Builds : commonUtils app

这样就可以近到utils目录了(可能在编译app之前)

至少现在是可以了,
但我那个makefile确实比较恶心,
学习一下vpath
mstlq 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 leontown 的回复:]
突然发现:
在./project/app下make时,
其输出竟然没有提示进入utils目录,

但是,其它设定的几个目录还是进去了。

为什么不去utils目录呢。。。
[/Quote]
Builds : app commonUtils
改成
Builds : commonUtils app
有用吗?
猜的……
LeonTown 2011-02-25
  • 打赏
  • 举报
回复
突然发现:
在./project/app下make时,
其输出竟然没有提示进入utils目录,

但是,其它设定的几个目录还是进去了。

为什么不去utils目录呢。。。
LeonTown 2011-02-25
  • 打赏
  • 举报
回复
路径应该还是正确的,否则会提示找不到路径。。。
mstlq 2011-02-25
  • 打赏
  • 举报
回复
搜索路径问题……
LeonTown 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]

看看VPATH 的使用吧……
参考
http://blog.csdn.net/weihua1984/archive/2010/01/06/5142491.aspx
[/Quote]

谢谢!
但我还是想知道,我的makefile的问题在哪里呢?
mstlq 2011-02-25
  • 打赏
  • 举报
回复

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧