ビルドディレクトリの構成

多くの場合、生成後にビルドの設定を変更したいことがあります。たとえば、デバッグビルドからリリースビルドに変更したり、カスタムコンパイラフラグを設定したり、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は上記の出力例と同様に、すべてのオプションの既定値を出力します。

検索結果は次のとおりです。