--- short-description: Configuring a pre-generated build directory ... # Configuring a build directory Often you want to change the settings of your build after it has been generated. For example you might want to change from a debug build into a release build, set custom compiler flags, change the build options provided in your `meson.options` file and so on. The main tool for this is the `meson configure` command. You invoke `meson configure` by giving it the location of your build dir. If omitted, the current working directory is used instead. Here's a sample output for a simple project. 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, gnu89, gnu99, gnu11, gnu17, gnu18, gnu2x] 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 These are all the options available for the current project arranged into related groups. The first column in every field is the name of the option. To set an option you use the `-D` option. For example, changing the installation prefix from `/usr/local` to `/tmp/testroot` you would issue the following command. meson configure -Dprefix=/tmp/testroot Then you would run your build command (usually `meson compile`), which would cause Meson to detect that the build setup has changed and do all the work required to bring your build tree up to date. Since 0.50.0, it is also possible to get a list of all build options by invoking [`meson configure`](Commands.md#configure) with the project source directory or the path to the root `meson.build`. In this case, Meson will print the default values of all options similar to the example output from above.