【makefile】:为何没有执行编译?
我对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