arm-linux-gcc cgictest.c cgic.c -o test.cgi
login.cgi:login.c cgic.h cgic.c
arm-linux-gcc login.c cgic.c -o login.cgi
我写了这样一个makefile,test.cgi成成了,而login.cgi却生成不了,是不是我的写法上有问题?请问应该怎么写????
9 个解决方案
#1
建议看一下Makefile的语法
缺省执行make的时候只会生成第一个Target,即只会执行test.cgi的内容。
通常写一个all的target, 然后包含要编译的两个target即可。
all: test.cgi login.cgi
test.cgi:cgictest.c cgic.h cgic.c
arm-linux-gcc cgictest.c cgic.c -o test.cgi
login.cgi:login.c cgic.h cgic.c
arm-linux-gcc login.c cgic.c -o login.cgi
缺省执行make的时候只会生成第一个Target,即只会执行test.cgi的内容。
通常写一个all的target, 然后包含要编译的两个target即可。
all: test.cgi login.cgi
test.cgi:cgictest.c cgic.h cgic.c
arm-linux-gcc cgictest.c cgic.c -o test.cgi
login.cgi:login.c cgic.h cgic.c
arm-linux-gcc login.c cgic.c -o login.cgi
#2
谢谢了,主要是没那么多时间去专研。
#3
没关系,在实践中慢慢琢磨,不明白了就上论坛问问,时间久了,就NB了。
#4
不明LZ在说什么
#5
正遇到这个问题,多谢了
#6
赞同二楼的做法,将两个目标执行文件统一作为源文件传递给另外一个总的入口目标文件。
all:test.cgi login.cgi
这样makefile在生成all的时候就会分别去生成test.cgi和login.cgi了
all:test.cgi login.cgi
这样makefile在生成all的时候就会分别去生成test.cgi和login.cgi了
#7
1、两个目录,两个makefile;
2、同1楼;
个人喜欢第一种。。。
---------------------------------------------------------
#
# Makefile -- Master subdir makefile.
#
.PHONY:all
.PHONY:clean
DIRSy =
DIRSy += test
DIRSy += test_file
DIRSy += test_gcc
DIRSy += test_gdb
all:
for i in $(DIRSy) ; do make -C $$i || exit $? ; done
clean:
-for i in $(DIRSy) ; do \
[ ! -d $$i ] || make -C $$i clean; \
done
2、同1楼;
个人喜欢第一种。。。
---------------------------------------------------------
#
# Makefile -- Master subdir makefile.
#
.PHONY:all
.PHONY:clean
DIRSy =
DIRSy += test
DIRSy += test_file
DIRSy += test_gcc
DIRSy += test_gdb
all:
for i in $(DIRSy) ; do make -C $$i || exit $? ; done
clean:
-for i in $(DIRSy) ; do \
[ ! -d $$i ] || make -C $$i clean; \
done
#8
生成n个都没有问题,主要是要定义规则。
就从all下手即可。
就从all下手即可。
#9
mark
#1
建议看一下Makefile的语法
缺省执行make的时候只会生成第一个Target,即只会执行test.cgi的内容。
通常写一个all的target, 然后包含要编译的两个target即可。
all: test.cgi login.cgi
test.cgi:cgictest.c cgic.h cgic.c
arm-linux-gcc cgictest.c cgic.c -o test.cgi
login.cgi:login.c cgic.h cgic.c
arm-linux-gcc login.c cgic.c -o login.cgi
缺省执行make的时候只会生成第一个Target,即只会执行test.cgi的内容。
通常写一个all的target, 然后包含要编译的两个target即可。
all: test.cgi login.cgi
test.cgi:cgictest.c cgic.h cgic.c
arm-linux-gcc cgictest.c cgic.c -o test.cgi
login.cgi:login.c cgic.h cgic.c
arm-linux-gcc login.c cgic.c -o login.cgi
#2
谢谢了,主要是没那么多时间去专研。
#3
没关系,在实践中慢慢琢磨,不明白了就上论坛问问,时间久了,就NB了。
#4
不明LZ在说什么
#5
正遇到这个问题,多谢了
#6
赞同二楼的做法,将两个目标执行文件统一作为源文件传递给另外一个总的入口目标文件。
all:test.cgi login.cgi
这样makefile在生成all的时候就会分别去生成test.cgi和login.cgi了
all:test.cgi login.cgi
这样makefile在生成all的时候就会分别去生成test.cgi和login.cgi了
#7
1、两个目录,两个makefile;
2、同1楼;
个人喜欢第一种。。。
---------------------------------------------------------
#
# Makefile -- Master subdir makefile.
#
.PHONY:all
.PHONY:clean
DIRSy =
DIRSy += test
DIRSy += test_file
DIRSy += test_gcc
DIRSy += test_gdb
all:
for i in $(DIRSy) ; do make -C $$i || exit $? ; done
clean:
-for i in $(DIRSy) ; do \
[ ! -d $$i ] || make -C $$i clean; \
done
2、同1楼;
个人喜欢第一种。。。
---------------------------------------------------------
#
# Makefile -- Master subdir makefile.
#
.PHONY:all
.PHONY:clean
DIRSy =
DIRSy += test
DIRSy += test_file
DIRSy += test_gcc
DIRSy += test_gdb
all:
for i in $(DIRSy) ; do make -C $$i || exit $? ; done
clean:
-for i in $(DIRSy) ; do \
[ ! -d $$i ] || make -C $$i clean; \
done
#8
生成n个都没有问题,主要是要定义规则。
就从all下手即可。
就从all下手即可。
#9
mark