我的例子是如下图:
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 啊。。。。 求救
7 个解决方案
#1
Makefile里可以写shell语法, 比如你可以在一个Makefile里make -C xxx/makefile执行其他的Makefile
#2
try CMake
#3
这个好像不难。
#结果是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 $@ $^
#4
为啥不用autotools啊?!!!!
#5
正解!
1 make:
-C dir, --directory=dir
Change to directory dir before reading the makefiles or doing any‐
thing else. If multiple -C options are specified, each is inter‐
preted relative to the previous one: -C / -C etc is equivalent to
-C /etc. This is typically used with recursive invocations of
make.
2 install
-d, --directory
treat all arguments as directory names; create all components of the specified directories
有这两个您的问题应该可以搞定了
#6
http://blog.csdn.net/subfate/article/details/6279898。
思想如下:
把不是main之外的所有模块作为库,生成.a,最后与main链接生成可执行文件。
像楼主的例子,将share目录的文件生成一个公共库,无论是private还是file1,只要能链接到那个目录中的库就OK。
思想如下:
把不是main之外的所有模块作为库,生成.a,最后与main链接生成可执行文件。
像楼主的例子,将share目录的文件生成一个公共库,无论是private还是file1,只要能链接到那个目录中的库就OK。
#7
我的文件是纯C,我是这样做的。把-share目录下的文件生成.o文件,然后在parivate 目录里编译的时候加上依赖这些.o文件。当然,头文件的包含就不用说了吧
#1
Makefile里可以写shell语法, 比如你可以在一个Makefile里make -C xxx/makefile执行其他的Makefile
#2
try CMake
#3
这个好像不难。
#结果是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 $@ $^
#4
为啥不用autotools啊?!!!!
#5
正解!
1 make:
-C dir, --directory=dir
Change to directory dir before reading the makefiles or doing any‐
thing else. If multiple -C options are specified, each is inter‐
preted relative to the previous one: -C / -C etc is equivalent to
-C /etc. This is typically used with recursive invocations of
make.
2 install
-d, --directory
treat all arguments as directory names; create all components of the specified directories
有这两个您的问题应该可以搞定了
#6
http://blog.csdn.net/subfate/article/details/6279898。
思想如下:
把不是main之外的所有模块作为库,生成.a,最后与main链接生成可执行文件。
像楼主的例子,将share目录的文件生成一个公共库,无论是private还是file1,只要能链接到那个目录中的库就OK。
思想如下:
把不是main之外的所有模块作为库,生成.a,最后与main链接生成可执行文件。
像楼主的例子,将share目录的文件生成一个公共库,无论是private还是file1,只要能链接到那个目录中的库就OK。
#7
我的文件是纯C,我是这样做的。把-share目录下的文件生成.o文件,然后在parivate 目录里编译的时候加上依赖这些.o文件。当然,头文件的包含就不用说了吧