当前位置: 技术问答>linux和unix
100分请教高手一个make文件依赖的小问题
来源: 互联网 发布时间:2016-07-05
本文导语: 以下make文件中: 第23行 all: Makefile $(SUBTARGETS)这里Makefile是依赖第43行,想请教: 1、如果没有第43行的话,是不是要有一个名为“Makefile”的文件? 2、如果既有第23行又有名为“Makefile”的文件 那么all规则依赖哪一...
以下make文件中:
第23行 all: Makefile $(SUBTARGETS)这里Makefile是依赖第43行,想请教:
1、如果没有第43行的话,是不是要有一个名为“Makefile”的文件?
2、如果既有第23行又有名为“Makefile”的文件 那么all规则依赖哪一个? 以哪一个为准?
1 #############################################################################
2 # Makefile for building: artoolkitplus
3 # Generated by qmake (1.07a) (Qt 3.3.4) on: Thu Apr 20 13:49:08 2006
4 # Project: artoolkitplus.pro
5 # Template: subdirs
6 # Command: $(QMAKE) -o Makefile artoolkitplus.pro
7 #############################################################################
8
9 MAKEFILE = Makefile
10 QMAKE = qmake
11 DEL_FILE = rm -f
12 CHK_DIR_EXISTS= test -d
13 MKDIR = mkdir -p
14 INSTALL_FILE=
15 INSTALL_DIR =
16 SUBTARGETS =
17 sub-src
18 sub-sample
19 sub-tools
20
21 first: all
22
23 all: Makefile $(SUBTARGETS)
24
25 src/$(MAKEFILE):
26 @$(CHK_DIR_EXISTS) "src" || $(MKDIR) "src"
27 cd src && $(QMAKE) src.pro -o $(MAKEFILE)
28 sub-src: src/$(MAKEFILE) FORCE
29 cd src && $(MAKE) -f $(MAKEFILE)
30
31 sample/$(MAKEFILE):
32 @$(CHK_DIR_EXISTS) "sample" || $(MKDIR) "sample"
33 cd sample && $(QMAKE) sample.pro -o $(MAKEFILE)
34 sub-sample: sample/$(MAKEFILE) FORCE
35 cd sample && $(MAKE) -f $(MAKEFILE)
36
37 tools/$(MAKEFILE):
38 @$(CHK_DIR_EXISTS) "tools" || $(MKDIR) "tools"
39 cd tools && $(QMAKE) tools.pro -o $(MAKEFILE)
40 sub-tools: tools/$(MAKEFILE) FORCE
41 cd tools && $(MAKE) -f $(MAKEFILE)
42
43 Makefile: artoolkitplus.pro /usr/lib/qt3/mkspecs/default/qmake.conf
44 $(QMAKE) -o Makefile artoolkitplus.pro
45 qmake: qmake_all
46 @$(QMAKE) -o Makefile artoolkitplus.pro
47
48 all: $(SUBTARGETS)
49 qmake_all: src/$(MAKEFILE) sample/$(MAKEFILE) tools/$(MAKEFILE)
50 ( [ -d src ] && cd src ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
51 ( [ -d sample ] && cd sample ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
52 ( [ -d tools ] && cd tools ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
53 clean uicables mocables uiclean mocclean lexclean yaccclean : qmake_all FORCE
54 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) $@; ) || true
55 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) $@; ) || true
56 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) $@; ) || true
57 uninstall_subdirs: qmake_all FORCE
58 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
59 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
60 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
61 install_subdirs: qmake_all FORCE
62 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) install; ) || true
63 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) install; ) || true
64 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) install; ) || true
65 distclean: qmake_all FORCE
66 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
67 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
68 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
69
70 install: install_subdirs
71
72 uninstall: uninstall_subdirs
73
74 FORCE:
第23行 all: Makefile $(SUBTARGETS)这里Makefile是依赖第43行,想请教:
1、如果没有第43行的话,是不是要有一个名为“Makefile”的文件?
2、如果既有第23行又有名为“Makefile”的文件 那么all规则依赖哪一个? 以哪一个为准?
1 #############################################################################
2 # Makefile for building: artoolkitplus
3 # Generated by qmake (1.07a) (Qt 3.3.4) on: Thu Apr 20 13:49:08 2006
4 # Project: artoolkitplus.pro
5 # Template: subdirs
6 # Command: $(QMAKE) -o Makefile artoolkitplus.pro
7 #############################################################################
8
9 MAKEFILE = Makefile
10 QMAKE = qmake
11 DEL_FILE = rm -f
12 CHK_DIR_EXISTS= test -d
13 MKDIR = mkdir -p
14 INSTALL_FILE=
15 INSTALL_DIR =
16 SUBTARGETS =
17 sub-src
18 sub-sample
19 sub-tools
20
21 first: all
22
23 all: Makefile $(SUBTARGETS)
24
25 src/$(MAKEFILE):
26 @$(CHK_DIR_EXISTS) "src" || $(MKDIR) "src"
27 cd src && $(QMAKE) src.pro -o $(MAKEFILE)
28 sub-src: src/$(MAKEFILE) FORCE
29 cd src && $(MAKE) -f $(MAKEFILE)
30
31 sample/$(MAKEFILE):
32 @$(CHK_DIR_EXISTS) "sample" || $(MKDIR) "sample"
33 cd sample && $(QMAKE) sample.pro -o $(MAKEFILE)
34 sub-sample: sample/$(MAKEFILE) FORCE
35 cd sample && $(MAKE) -f $(MAKEFILE)
36
37 tools/$(MAKEFILE):
38 @$(CHK_DIR_EXISTS) "tools" || $(MKDIR) "tools"
39 cd tools && $(QMAKE) tools.pro -o $(MAKEFILE)
40 sub-tools: tools/$(MAKEFILE) FORCE
41 cd tools && $(MAKE) -f $(MAKEFILE)
42
43 Makefile: artoolkitplus.pro /usr/lib/qt3/mkspecs/default/qmake.conf
44 $(QMAKE) -o Makefile artoolkitplus.pro
45 qmake: qmake_all
46 @$(QMAKE) -o Makefile artoolkitplus.pro
47
48 all: $(SUBTARGETS)
49 qmake_all: src/$(MAKEFILE) sample/$(MAKEFILE) tools/$(MAKEFILE)
50 ( [ -d src ] && cd src ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
51 ( [ -d sample ] && cd sample ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
52 ( [ -d tools ] && cd tools ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
53 clean uicables mocables uiclean mocclean lexclean yaccclean : qmake_all FORCE
54 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) $@; ) || true
55 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) $@; ) || true
56 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) $@; ) || true
57 uninstall_subdirs: qmake_all FORCE
58 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
59 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
60 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
61 install_subdirs: qmake_all FORCE
62 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) install; ) || true
63 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) install; ) || true
64 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) install; ) || true
65 distclean: qmake_all FORCE
66 ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
67 ( [ -d sample ] && cd sample ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
68 ( [ -d tools ] && cd tools ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
69
70 install: install_subdirs
71
72 uninstall: uninstall_subdirs
73
74 FORCE:
|
1
对
2
23 行指定的是 all 的依赖规则,43 行指定是 Makefile 的依赖规则
这是两层,没有冲突
对
2
23 行指定的是 all 的依赖规则,43 行指定是 Makefile 的依赖规则
这是两层,没有冲突
|
应该是
“Makefile” 的依赖是有更新,Makefile 文件更新没有作用
“Makefile” 的依赖是有更新,Makefile 文件更新没有作用
|
好长啊 等待高手给你解决吧 友情UP
|
如果用的是
make all
则会先执行43行, 然后执行 $(SUBTARGETS)
如果用的是
make Makefile 则直接执行第43行
make all
则会先执行43行, 然后执行 $(SUBTARGETS)
如果用的是
make Makefile 则直接执行第43行