当前位置: 技术问答>linux和unix
谁来帮我写个简单的Makefile文件?要求......
来源: 互联网 发布时间:2015-02-14
本文导语: /* 源程序 test.c 位于:/test/src/test.c */ #include #include "external.h" int main() { printf("hello, worldn"); msg(); return 0; } /* external.h 位于:/test/inlcude/external.h */ void msg(void); /* external.c 位于:/test/fun/external.c ...
/* 源程序 test.c 位于:/test/src/test.c */
#include
#include "external.h"
int main()
{
printf("hello, worldn");
msg();
return 0;
}
/* external.h 位于:/test/inlcude/external.h */
void msg(void);
/* external.c 位于:/test/fun/external.c */
#include
#include "../include/external.h"
void msg(void)
{
printf("this foo is in external.cn");
}
/********************************************************/
开始我把三个源文件都放在/test目录下,我这么写Makefile文件没有问题:
test : external.o test.o
gcc -o test external.o test.o
external.o:
gcc -c external.c
test.o:
gcc -c test.c
clean:
rm *.o
/************问题*******************************/
现在我三个文件放在不同的文件夹里:
/test/src/test.c
/test/include/external.h
/test/fun/external.c
我该怎么写这个Makefile(存放在/test/src/),而且希望可执行文件test自动存放在/test/bin目录下?
#include
#include "external.h"
int main()
{
printf("hello, worldn");
msg();
return 0;
}
/* external.h 位于:/test/inlcude/external.h */
void msg(void);
/* external.c 位于:/test/fun/external.c */
#include
#include "../include/external.h"
void msg(void)
{
printf("this foo is in external.cn");
}
/********************************************************/
开始我把三个源文件都放在/test目录下,我这么写Makefile文件没有问题:
test : external.o test.o
gcc -o test external.o test.o
external.o:
gcc -c external.c
test.o:
gcc -c test.c
clean:
rm *.o
/************问题*******************************/
现在我三个文件放在不同的文件夹里:
/test/src/test.c
/test/include/external.h
/test/fun/external.c
我该怎么写这个Makefile(存放在/test/src/),而且希望可执行文件test自动存放在/test/bin目录下?
|
try:
加上参数目录
$dir1 /test/src
$dir2 /test/include
$dir3 /test/bin
gcc -o $dir/test ……
加上参数目录
$dir1 /test/src
$dir2 /test/include
$dir3 /test/bin
gcc -o $dir/test ……
|
./bin/test : external.o test.o
gcc -o ./bin/test external.o test.o
external.o: ../fun/external.c
gcc -c ../fun/external.c
test.o: test.c
gcc -c test.c
clean:
rm *.o
gcc -o ./bin/test external.o test.o
external.o: ../fun/external.c
gcc -c ../fun/external.c
test.o: test.c
gcc -c test.c
clean:
rm *.o