qmake 亂亂亂談 三

2021-08-26 04:37:25 字數 1982 閱讀 4147

接前面的qmake 亂亂亂談(一)以及qmake 亂亂亂談(二),本文看看qmake中的函式(manual中有的就不重複了)。

函式分兩種:

函式還可以分兩種(真不知道怎麼敘述):

以進行資料處理為目的的函式?返回值是處理結果。

前面提到,兩類函式中,

exists( $(qtdir)/lib/libqt-mt* )

file = /etc/passwd

filename = $$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:  else 

buff[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 dbzhang800

project 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 dbzhang802

project 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 不再亂談

累了,不想再寫下去了.有些東西感覺寫的過頭,寫完又刪除了,過猶不及,點到即止,過頭了的東西放網上,誰知道會搞出什麼問題,下一步集中精力做我的下十年去了.幾篇暢想和亂彈,已經打好了最後終結所需的東西,最後完全算是有個交待,給萬一以後有人進來看到,不能浪費了人家的時間和熱情.對於函式式程式設計,感覺自已...