配置构建目录

通常,您希望在构建生成后更改构建设置。例如,您可能希望从调试构建更改为发布构建,设置自定义编译器标志,更改在 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.build 的路径调用 meson configure 来获取所有构建选项的列表。在这种情况下,Meson 将打印所有选项的默认值,类似于上面的示例输出。

搜索结果是