外部指令
作為軟體組態的一部分,您可能希望透過執行外部指令來取得額外的資料。基本語法如下。
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
呼叫該腳本。
搜尋結果為