日期:2014-05-16  浏览次数:20750 次

多目录的Makefile编写
单个文件的Makefile我还能够写个简单的。但是如下的Makefile怎么写呢?我网上找的都达不到我的要求。
我的例子是如下图:
       Game  我有一个文件夹,里面只有两个文件夹(private和share)。没有其他文件了
          -parivate  
                  -main.cpp
                  -echo.h
                  -echo.cpp
                  -Makefile
          -share
                -print.h
                -print.cpp
                -output.h
                -output.cpp
这样一个目录层次:我想要达到的要求是,share是一个共享文件夹。里面包含公用函数。 private是一个私有文件夹里面就是具体的单独实现。 Game下没有Makefile,我只想在private下生成可执行文件。 main.cpp调用了print.h和output.h和echo.h的函数。(假设每个.h里面只有一个打印函数)。 我也可以在Game下再新建一个私有文件夹 file1。 里面也需要调用share里面的函数。 但是我只要在file1下面再写一个Makefile就行了  那应该怎样做呢?Makefile 啊。。。。 求救
------解决方案--------------------
这个好像不难。



#结果是main 如果有其他依赖项自己添加 比如-I等CXXFLAG
main:main.o  echo.o print.o output.o
g++ -o  $@ $^

%.o:%.cpp
g++ -c -o $@ $^

%.o:../share/%.cpp
g++ -c -o $@ $^

 

------解决方案--------------------
http://blog.csdn.net/subfate/article/details/6279898。
思想如下:
把不是main之外的所有模块作为库,生成.a,最后与main链接生成可执行文件。

像楼主的例子,将share目录的文件生成一个公共库,无论是private还是file1,只要能链接到那个目录中的库就OK。