命令模式 示例 程式組織

2021-09-06 10:22:01 字數 3595 閱讀 6246

#在核心中將生成的目標檔案與原始檔放在一起,此處將生成的目標檔案放在乙個目錄下,類似於 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/sh

23 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...