外部指令

作為軟體組態的一部分,您可能希望透過執行外部指令來取得額外的資料。基本語法如下。

r = run_command('command', 'arg1', 'arg2', 'arg3', check: true)
output = r.stdout().strip()
errortxt = r.stderr().strip()

如果給定 check: true,如果 command 返回非零的退出碼,meson 將會產生錯誤。或者,您可以設定 check: false 並使用 r.returncode() 取得退出碼。

自 0.52.0 版本起,您可以將指令環境作為字典傳遞

run_command('command', 'arg1', 'arg2', env: {'FOO': 'bar'}, check: true)

自 0.50.0 版本起,您也可以傳遞指令的 env 物件

env = environment()
env.set('FOO', 'bar')
run_command('command', 'arg1', 'arg2', env: env)

run_command 函式會返回一個物件,該物件可以查詢返回值以及寫入 stdout 和 stderr 的文字。strip 方法呼叫用於從字串中去除尾隨和前導的空白。通常,命令列程式的輸出會以換行符結尾,這在字串變數中是不需要的。第一個參數可以是字串,也可以是您先前使用 find_program 偵測到的可執行檔。

Meson 會自動偵測具有 shebang 行的腳本,並在 Windows 和 Unix 系統上使用其中指定的可執行檔/直譯器來執行它們。

請注意,您不能將命令列作為單一字串傳遞。也就是說,呼叫 run_command('do_something foo bar') 將不會有效。您必須將字串拆分為個別的參數,或者將拆分後的指令作為陣列傳遞。還應該注意的是,Meson 不會將指令傳遞給 shell,因此任何嘗試使用諸如環境變數、反引號或管道之類的指令列都將無法運作。如果您需要 shell 語意,請將您的指令寫入腳本檔案,然後使用 run_command 呼叫該腳本。

搜尋結果為