多目录的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。