小弟, 请教一下Makefile中 %: 是什么意思了?

nicklgw 2011-12-02 01:31:37
请教一下 $(APP): %: %.c只一句话时什么意思了? 急!!!分不够可以再加...

PUB_ROOT=/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub
CROSS := arm-vfp_uclibc-linux-gnu-
CC = $(CROSS)gcc

PWD = `pwd`

SAMPLE_ROOT = $(PWD)/../..
HIGO_LIB_PATH = ${PUB_ROOT}/lib


CFLAGS= -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian
INCLUDE = -I${PUB_ROOT}/include
LIB = -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
LIBPATH =-L${HIGO_LIB_PATH}

SRC = $(wildcard *.c)
APP = $(SRC:%.c=%)

all: $(APP)

$(APP): %: %.c
echo "===lgw=== $(APP): %: %.c"
$(CC) $(CFLAGS) -o $@ $< $(INCLUDE) $(LIBPATH) $(LIB)

clean:
rm -rf $(APP)

test :
#sample_dec.c sample_dec2.c sample_fillrect.c sample_gdev.c sample_i18n.c sample_surface.c sample_text.c sample_wm.c
echo $(SRC)

#sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm
echo $(APP)


...全文
1929 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicklgw 2011-12-06
  • 打赏
  • 举报
回复
# lgw modify
PUB_ROOT=/home/liguowang/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub
CROSS := arm-vfp_uclibc-linux-gnu-
CC = $(CROSS)gcc

PWD = `pwd`

SAMPLE_ROOT = $(PWD)/../..
HIGO_LIB_PATH = ${PUB_ROOT}/lib


CFLAGS= -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian
INCLUDE = -I${PUB_ROOT}/include
LIB = -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
LIBPATH =-L${HIGO_LIB_PATH}

SRC = $(wildcard *.c)
APP = $(SRC:%.c=%)

all: $(APP)

#步骤1
#all : sample_dec sample_dec2

$(APP): % : %.c
#步骤2
#echo 123456 $(MAKECMDGOALS)
#sample_dec sample_dec2 : % : %.c
$(CC) $(CFLAGS) -o $@ $< $(INCLUDE) $(LIBPATH) $(LIB)

clean:
rm -rf $(APP)

qwer_boo 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tankles 的回复:]

正常情况应该是每个*.c对应一个*.o文件,而你的makefile中,只是没有要.o后缀,$(APP)为取得文件名集合(不包括扩展名)
更好理解的写法是:
APP = $(SRC:%.c=%.o)
$(APP): %.o: %.c
[/Quote]++
巴山独钓 2011-12-02
  • 打赏
  • 举报
回复
正常情况应该是每个*.c对应一个*.o文件,而你的makefile中,只是没有要.o后缀,$(APP)为取得文件名集合(不包括扩展名)
更好理解的写法是:
APP = $(SRC:%.c=%.o)
$(APP): %.o: %.c
巴山独钓 2011-12-02
  • 打赏
  • 举报
回复
makefile的静态模式:
语法:
<targets ...>: <target-pattern>: <prereq-patterns ...>
<commands>
...
targets 定义了一系列的目标文件,可以有通配符。是目标的一个集合。 target-parrtern是指明了targets的模式,也就是的目标集模式。 prereq-parrterns是目标的依赖模式,它对target-parrtern形成的模式再进行一次依赖目标的定义。
是举个例子来说明:
如果把<target-parrtern>定义成“%.o”,意思是<target>集合中都是以“.o”结尾的,而如果把<prereq-parrterns>定义成“%.c”,意思是对<target-parrtern>所形成的目标集进行二次定义,其计算方法是,取<target-parrtern>模式中的“%”(也就是去掉了[.o]这个结尾),并为其加上[.c]这个结尾,形成的新集合。
nicklgw 2011-12-02
  • 打赏
  • 举报
回复
$(APP) : % : %.c

中间%表示$(APP)中的一个, 它是依赖 对应的 %.c 的

不知道理解对不对
nicklgw 2011-12-02
  • 打赏
  • 举报
回复
$(APP) : % : %.c
估计中间一个%是取$(APP)的每一个, 然后 其中每一个是依赖%.c的
nicklgw 2011-12-02
  • 打赏
  • 举报
回复
这个我在网上都搜遍了, 但是没有找到关于这句$(APP): %: %.c是什么意思? 不过也谢谢了
[Quote=引用 2 楼 wesleyluo 的回复:]

这个都是写makefile的一些规则,网上搜下很多的。其实我也不知道具体意思,嘿嘿。
[/Quote]
wesleyluo 2011-12-02
  • 打赏
  • 举报
回复
这个都是写makefile的一些规则,网上搜下很多的。其实我也不知道具体意思,嘿嘿。
nicklgw 2011-12-02
  • 打赏
  • 举报
回复
上面Makefile执行结果如下:

echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_dec sample_dec.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_dec2 sample_dec2.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_fillrect sample_fillrect.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_gdev sample_gdev.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_i18n sample_i18n.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_surface sample_surface.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_text sample_text.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group
echo "===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c"
===lgw=== sample_dec sample_dec2 sample_fillrect sample_gdev sample_i18n sample_surface sample_text sample_wm: %: %.c
arm-vfp_uclibc-linux-gnu-gcc -g -Wall -O2 -march=armv5te -mtune=arm9tdmi -mlittle-endian -o sample_wm sample_wm.c -I/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/include -L/home/Hi3560e/Hi3560E_DMS_V100R001C01SPC050/sdk-hfp/pub/lib -static -Wl,--start-group -ltde -lapi -lhigo -lhigoadp -lpng -lz -lpthread -ljpeg -lm -lunify -Wl,--end-group

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧