設定建置目錄

您通常會在建置產生後,變更其設定。例如,您可能會想要從除錯建置變更為發行建置、設定自訂的編譯器旗標、變更 meson.options 檔案中提供的建置選項等等。

主要的工具是 meson configure 命令。

您透過提供建置目錄的位置來調用 meson configure。如果省略,則會改用目前的工作目錄。以下是一個簡單專案的範例輸出。

Core properties

Source dir /home/jpakkane/clangdemo/2_address
Build dir  /home/jpakkane/clangdemo/2_address/buildmeson

Core options:
  Option          Current Value Possible Values                                            Description
  ------          ------------- ---------------                                            -----------
  auto_features   auto          [enabled, disabled, auto]                                  Override value of all 'auto' features
  backend         ninja         [ninja, vs, vs2010, vs2015, vs2017, vs2019, vs2022, xcode] Backend to use
  buildtype       release       [plain, debug, debugoptimized, release, minsize, custom]   Build type to use
  debug           false         [true, false]                                              Debug
  default_library shared        [shared, static, both]                                     Default library type
  install_umask   0022          [preserve, 0000-0777]                                      Default umask to apply on permissions of installed files
  layout          mirror        [mirror, flat]                                             Build directory layout
  optimization    3             [plain, 0, g, 1, 2, 3, s]                                  Optimization level
  prefer_static   false         [true, false]                                              Whether to try static linking before shared linking
  strip           false         [true, false]                                              Strip targets on install
  unity           off           [on, off, subprojects]                                     Unity build
  warning_level   1             [0, 1, 2, 3, everything]                                   Compiler warning level to use
  werror          false         [true, false]                                              Treat warnings as errors

Backend options:
  Option            Current Value Possible Values Description
  ------            ------------- --------------- -----------
  backend_max_links 0             >=0             Maximum number of linker processes to run or 0 for no limit

Base options:
  Option      Current Value Possible Values                                               Description
  ------      ------------- ---------------                                               -----------
  b_asneeded  true          [true, false]                                                 Use -Wl,--as-needed when linking
  b_colorout  always        [auto, always, never]                                         Use colored output
  b_coverage  false         [true, false]                                                 Enable coverage tracking.
  b_lto       false         [true, false]                                                 Use link time optimization
  b_lundef    true          [true, false]                                                 Use -Wl,--no-undefined when linking
  b_ndebug    false         [true, false, if-release]                                     Disable asserts
  b_pch       true          [true, false]                                                 Use precompiled headers
  b_pgo       off           [off, generate, use]                                          Use profile guided optimization
  b_sanitize  none          [none, address, thread, undefined, leak, memory, address,undefined] Code sanitizer to use
  b_staticpic true          [true, false]                                                 Build static libraries as position independent

Compiler options:
  Option        Current Value Possible Values                                                                                               Description
  ------        ------------- ---------------                                                                                               -----------
  c_args        []                                                                                                                          Extra arguments passed to the C compiler
  c_link_args   []                                                                                                                          Extra arguments passed to the C linker
  c_std         c99           [none, c89, c99, c11, c17, c18, c2x, c23, gnu89, gnu99, gnu11, gnu17, gnu18, gnu2x, gnu23]                                C language standard to use
  cpp_args      []                                                                                                                          Extra arguments passed to the C++ compiler
  cpp_debugstl  false         [true, false]                                                                                                 STL debug mode
  cpp_link_args []                                                                                                                          Extra arguments passed to the C++ linker
  cpp_std       c++11         [none, c++98, c++03, c++11, c++14, c++17, c++1z, c++2a, c++20, gnu++03, gnu++11, gnu++14, gnu++17, gnu++1z, gnu++2a, gnu++20] C++ language standard to use
  fortran_std   []            [none, legacy, f95, f2003, f2008, f2018]                                                                      language standard to use

Directories:
  Option         Current Value        Description
  ------         -------------        -----------
  bindir         bin                  Executable directory
  datadir        share                Data file directory
  includedir     include              Header file directory
  infodir        share/info           Info page directory
  libdir         lib/x86_64-linux-gnu Library directory
  libexecdir     libexec              Library executable directory
  localedir      share/locale         Locale data directory
  localstatedir  /var/local           Localstate data directory
  mandir         share/man            Manual page directory
  prefix         /usr/local           Installation prefix
  sbindir        sbin                 System executable directory
  sharedstatedir /var/local/lib       Architecture-independent data directory
  sysconfdir     etc                  Sysconf data directory

Project options:
  Option         Current Value Possible Values           Description
  ------         ------------- ---------------           -----------
  array_opt      [one, two]    [one, two, three]         array_opt
  combo_opt      three         [one, two, three]         combo_opt
  free_array_opt [one, two]                              free_array_opt
  integer_opt    3             >=0, <=5                  integer_opt
  other_one      false         [true, false]             other_one
  some_feature   enabled       [enabled, disabled, auto] some_feature
  someoption     optval                                  An option

Testing options:
  Option    Current Value Possible Values Description
  ------    ------------- --------------- -----------
  errorlogs true          [true, false]   Whether to print the logs from failing tests
  stdsplit  true          [true, false]   Split stdout and stderr in test logs

這些是目前專案的所有可用選項,依相關群組排列。每個欄位的第一欄是選項的名稱。若要設定選項,您可以使用 -D 選項。例如,若要將安裝前綴從 /usr/local 變更為 /tmp/testroot,您會發出以下命令。

meson configure -Dprefix=/tmp/testroot

然後您會執行建置命令 (通常是 meson compile),這會讓 Meson 偵測到建置設定已變更,並執行所有必要的工作,以使您的建置樹保持在最新狀態。

自 0.50.0 版起,也可以透過調用 meson configure 並提供專案原始碼目錄或根目錄 meson.build 的路徑,取得所有建置選項的清單。在這種情況下,Meson 會列印所有選項的預設值,類似於上面的範例輸出。

搜尋結果如下