LinuxÒÁµéÔ°ÂÛ̳'s Archiver

shaohua112 ·¢±íÓÚ 2007-6-28 14:38

Çó½ÌMakefile¸ßÊÖÒ»¸öÎÊÌâ?

³ÌÐòĿ¼½á¹¹: ./main/main.c ./src/sub.c
yM%PE,p8jl u Êä³ö:                 ./out/his/    ./out/main/
8mn4t Msq:i
u-\'| vk} MakefileÈçÏÂ:%xVJ:};_XR%T~ D`

9k InEP SOURCE_DIR := .3Y|-n9bdH;Ed
BINARY_DIR := ./outv)Jn-r8LvIo
modules        := main src1L6o2j3b(i#d|
sources        := $(foreach m,$(modules),$(wildcard $(SOURCE_DIR)/$m/*.c))[,CNRy;I,|m
objects        := $(call source-to-object,$(sources))(bS_q [

Mf]]$G$~d0a)YR source-dir-to-binary-dir = $(addprefix $(BINARY_DIR)/, $(patsubst $(SOURCE_DIR)/%,%,$1))
@N/a.Z]n\a R source-to-object = $(call source-dir-to-binary-dir, $(subst .c,.o,$(filter %.c,$1)))kMs%WWC^K*G

rA-v+M"| $(program): $(objects)*H ^`8i7? Esg;N
    gcc $(CFLAGS) -o $@ $^v0s'K]i!M(y
w XEl9[+~
define one-compile-rule
,s7d!PV8o%`9S2}   $1: $2
\;NJcbfy/F     @gcc $(CFLAGS) -c $$< -o $$@
*c&o }Q3z_A endef
/C"U,f"M0y$W"fw6m
$T6Dv/I4Bblue ÎÊÌâÀ´ÁË:
U'dE.@3e1P ---------------------------------------------------------------------------------
E0m] n@ ʹÓÃÏÂÃæÁ½ÐÐ:
;f0[7C2A H2B $(eval $(call one-compile-rule,./out/main/main.o,./main/main.c)) @ e8qh!E8gi
$(eval $(call one-compile-rule,./out/src/sub.o,./src/sub.c)).D(s/so'Zi
Ò»ÇÐÕý³£,Éú³É.oÎļþ(./out/his/    ./out/main/ÏÂ),Éú³É¿ÉÖ´ÐгÌÐò$(program).hI&jY n+D
---------------------------------------------------------------------------------8US"n%^-v{m6i
ÉÏÃæÁ½Ðв»Ê¹Óû»³ÉÏÂÃæ:\4CF~ D
define compile-rulesr:v6@,Y|c zH
  $(foreach s,$(sources), \ Di\/z]]:_2kS
    $(call one-compile-rule,$(call source-to-object,$s),$s))O;}1hM3T;^
endef
&G?a{(Mb9c2[H&r r`/x W|5p x G$FzZ U
$(eval $(call compile-rules))HUt)F^)R

h\.zXR}-QTVm makeÒ»ÏÂ:Wy _x x#m*BXp
ERRORgcc: ./out/src/sub.o:./src/sub.c ûÓÐÄǸöÎļþ»òÎļþ¼Ð;}0c2\r |e
¹ÖÔÕ¹ÖÔÕ,¸ßÊÖÃÇÖ¸µãÖ¸µã,µ½µ×ÄÄ´íÁË?Íò·Ö¸ÐлE&YNP-l_X

@ pf,Pz9A4a [[i] ±¾Ìû×îºóÓÉ shaohua112 ÓÚ 2007-6-28 14:50 ±à¼­ [/i]]

flag ·¢±íÓÚ 2007-6-29 09:59

./out/src/£¿£¿£¿ÓÐÕâ¸öĿ¼£¿

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.