新增參數
您通常需要指定額外的編譯器參數。Meson 提供了兩種不同的方式來實現這一點:全域參數和每個目標的參數。
全域參數
全域編譯器參數使用以下命令設定。例如,您可以執行以下操作。
add_global_arguments('-DFOO=bar', language : 'c')
這會讓 Meson 將定義新增到所有 C 編譯中。通常,您會將此設定用於全域設定的旗標。請注意,若要設定 C/C++ 語言標準(GCC 中的 -std=c99
參數),您可能需要使用 project()
函式的預設選項。如需詳細資訊,請參閱參考手冊。
全域參數具有某些限制。它們都必須在指定任何建置目標之前定義。這可確保在整個專案中建置的每個單一原始程式碼檔案的全域旗標都相同,但有一個例外。作為專案組態一部分執行的編譯測試不會使用這些旗標。原因在於您可能需要使用和不使用指定旗標執行測試編譯,以判斷您的建置設定。因此,測試不會使用這些全域參數。
您應該只使用此設定設定最重要的旗標,您應該不要設定偵錯或最佳化旗標。相反地,應該藉由選擇適當的建置類型來指定它們。
專案參數
專案參數的工作方式與全域參數類似,不同之處在於它們僅在目前的子專案中有效。用法很簡單
add_project_arguments('-DMYPROJ=projname', language : 'c')
這會將編譯器旗標新增至目前專案中的所有 C 原始碼。
每個目標的參數
每個目標的參數定義起來也一樣簡單。
executable('prog', 'prog.cc', cpp_args : '-DCPPTHING')
在這裡,我們建立一個 C++ 可執行檔,其中有一個額外參數,該參數會在編譯期間使用,但不適用於連結。
您可以在參考表中找到其他語言的參數名稱。
指定額外的連結器參數的方式相同
executable('prog', 'prog.cc', link_args : '-Wl,--linker-option')
搜尋結果為