#在核心中將生成的目標檔案與原始檔放在一起,此處將生成的目標檔案放在乙個目錄下,類似於 android的lk目錄下的組織。#當頭檔案更新時,更新cpp檔案的時間戳,進而重新生成依賴檔案,並執行原始檔到目標檔案的編譯。
#tools目錄下的depend.sh,可以直接寫在makefile中,但是太長,所以單獨列出。
#本檔案在執行時,顯示「has modification time 3.2e+05s in the future",系統的時間混亂了(強制關機時,ubuntu好像都這樣),設定正確的系統時間即可
#如您無意看到此肆文(當然,所有內容均備自己查閱),有不當之處,請指出。
1# makefile23
#關於下文中{}與()的不良用法說明:
4 #1
、承如徐海兵先生譯文所述,應保檔案中()與{}用法的一致性。
5 #2
、本例項中之所以沒有在環境中統一()與{}的用法,但秉承:
6# ()用於函式呼叫
7# {}用於變數
8# 原因在於:bash中區分()與{},so…….如果先學習makefile,請遵循良好的習慣910
include rule.mk
11 target =mytest
12 gcc = g++
1314
.phony : all
15all : $
1617
$ : $
18 $$ -o $@ $^
1920
#注意:
21# include 放在最終目標關係之下,否則會造成將include檔案的目標作為最終目標
22 ifneq ($(filter-out distclean clean tags, $), )
23 -include $
24endif
25ifeq ($, )
26sinclude $
27endif
2829 #1
、此處主要生成cpp與h之間的依賴關係
30# 一般情況下,cpp與h之間沒有什麼依賴關係,
3132
# 從而使得目標檔案也變化.
33 #2、當然我們也可以輕鬆地寫出:%.d, %.o: %.cpp的規則,承如徐海兵先生譯文所示;
34# 此處則採用如上1中解釋所述的規則(自造).
35 #3
、使用續航符,以使得在同一shell程序中執行.
36 #4
、@放在行首.
37 $/%.d : $/%.cpp
38 $$ -mm $ $< -mf $@; \
39mv
$@ $@.$$$$; \
40 /bin/bash tools/depend.sh $@.$$$$ >$@; \
41rm
$@.$$$$
4243 $/%.o : $/%.cpp
44 $ $ -c $ $< -o $@
4546
47.phony : distclean clean tags
48distclean : clean
49 -$(rm) -r tags
5051
clean :
52 -$(rm) -r $ $ $
5354
tags :
55 ctags -r
5657
.phony: froce
58force : ;
1# rule.mk
23 # v=1時不顯示命令執行過程
4 ifeq ("
$(origin v)
", "
command line")
5 build_verbose =$
6endif
7ifndef build_verbose
8 build_verbose = 0
9endif
1011 ifeq ($, 1
)12 q =@
13else
14 q =
15endif
1617 shell := /bin/bash
1819 cur_dir := $(shell pwd)20
21 incs := $/include
22 cflags := -wall -i$
2324 dep := $/depend
2526 obj := $/object
2728
ifeq ($(wildcard $), )
29 $(shell mkdir -p $)
30endif
3132
ifeq ($(wildcard $), )
33 $(shell mkdir -p $)
34endif
3536 src_cpp = $(wildcard *.cpp
)37 objects = $(patsubst %.cpp, $/%.o, $(src_cpp))
38 depends = $(patsubst %.cpp, $/%.d, $(src_cpp))
1 #! /bin/sh23 depend_temp=/tmp/depend.$$$$
4rm -rf $56
#注意對首行的解析,尤其是續航符後不能有其它字元(立即換行)
7 #sed -n -e '
1p' $1 | cut -d '
' -f 2- | awk
'begin end if(nf > 1) printf "\n"}
' >$89
sed -n -e '
1p' $1 | cut -d '
' -f 2- >$
1011
sed -n -e '
1p' $ | grep
'^\\
'1>&/dev/null && rm $ && touch$12
13awk
'nr>1
' $1 >>$
14 #tail -n +2 $1 >>$
1516
cp$ $.bak
1718
rm $ && touch$19
20sed -n -e '
1p' $.bak | awk
'begin end if(nf >1) printf "\n"}
' >$
21awk
'nr>1
' $.bak >>$
22rm
$.bak
2324 add_line=`head -n 1 $ | cut -d '
' -f 1`25
#在最後一行加入touch命令
26 #$,可以看下bash中的此用法
27echo -e "
\ttouch $
" >>$
28cat$29
30rm -rf $
EXT JS 6示例程式 Login示例程式
1.用sencha cmd生成應用程式模版 2.建立login view元件 資料夾下,有預設的 main 資料夾,這個資料夾包含了檔案main.js,maincontroller.js,和 mainmodel.js 資料夾下建立乙個資料夾 login 在 login 資料夾下,新建兩個檔案 log...
UDP Socket示例程式
通常我們涉及到的網路程式設計,也稱為socket程式設計,多數是tcp和udp協議的程式設計,二者最大的區別就是 1.tcp是可靠的傳輸,需要三次握手建立連線再傳資料,而udp是無連線的,即使沒有接收方,也可以乙個勁往乙個位址發資料,所以說是不可靠的傳輸模式。2.tcp是基於流模式的,udp是基於資...
爬蟲示例程式
importrequests frombs4importbeautifulsoup try importxml.etree.celementtreeaset exceptimporterror importxml.etree.elementtreeaset base url response req...