接前面的qmake 亂亂亂談(一)以及qmake 亂亂亂談(二),本文看看qmake中的函式(manual中有的就不重複了)。
函式分兩種:
函式還可以分兩種(真不知道怎麼敘述):
以進行資料處理為目的的函式?返回值是處理結果。
前面提到,兩類函式中,
exists( $(qtdir)/lib/libqt-mt* )
file = /etc/passwdfilename = $$basename(file) #passwd
可是有沒有疑問?
system 有兩種用法:
system(ls /bin):has_bin=false
uname = $$system(uname -s)
莫不是我們前面說的都是錯的!!!
在看原始碼之前一直沒搞清楚到底怎麼回事。原來,有兩個system函式,分別屬於前面的兩類。
case t_system:if(args.count() < 1 || args.count() > 2)
if(args.count() == 2)
return system(args[0].tolatin1().constdata()) == 0;
case e_system: elsebuff[read_in] = '\0';
output += buff;
}ret += split_value_list(output);
if(proc)
qt_pclose(proc);
}break; }
看例子:定義的兩個函式都是叫func1,但型別不同
definereplace(func1)definetest(func1)
name = dbzhang800
func1($$name):message(success)
abc = $$func1($$name)
project message: test_func dbzhang800project message: success
project message: replace_func dbzhang800
definereplace(qtlibrarytarget)}isempty(ret):ret = $$library_name
return($$ret)
}
為除錯版的庫檔案新增_debug或d字尾!
函式內的如何獲取引數:
definereplace(func1)for(v, args)
return ($$1)
}name = dbzhang800 dbzhang801 dbzhang802
abc = $$func1($$name)
#兩個引數的要這麼寫(逗號不同於空格),然後,用$$2獲取第二個引數,$$args獲取全部
#abcd = $$func1($$name, $$name)
project message: $$1 dbzhang800 dbzhang801 dbzhang802project message: $$args dbzhang800 dbzhang801 dbzhang802
project message: dbzhang800
project message: dbzhang801
project message: dbzhang802
project message: dbzhang800
project message: dbzhang801
project message: dbzhang802
qmake 亂亂亂談 四
繼續qmake,本文主題 低調的 template subdirs 非常非常常用的乙個東西,可是manual中卻介紹的很少,太低調了。在編寫包含多可執行檔案 庫 外掛程式 的程式時,一直不敢相信subdirs的能力,以至於曾一度想轉到cmake之下。manual 中對 template subdir...
qmake 亂亂亂談 二
接前面qmake 亂亂亂談 一 繼續看看qmake。暫定主題 qmake之命令列引數及qmake啟動時載入了什麼東西,或許可以藉此學習一下qmake是處理命令列引數的方法 執行 qmake h 可以得到qmake大部分命令列引數及其說明。本文預計涉及到的引數如下 project 工作於何種模式,pr...
亂談 2 不再亂談
累了,不想再寫下去了.有些東西感覺寫的過頭,寫完又刪除了,過猶不及,點到即止,過頭了的東西放網上,誰知道會搞出什麼問題,下一步集中精力做我的下十年去了.幾篇暢想和亂彈,已經打好了最後終結所需的東西,最後完全算是有個交待,給萬一以後有人進來看到,不能浪費了人家的時間和熱情.對於函式式程式設計,感覺自已...