topic "Build methods";
[l288;i1120;a17;O9;~~~.1408;2 $$1,0#10431211400427159095818037425705:param]
[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
[H4;b83;*4 $$3,5#07864147445237544204411237157677:title]
[i288;O9;C2 $$4,6#40027414424643823182269349404212:item]
[b42;a42;ph2 $$5,5#45413000475342174754091244180557:text]
[l288;b17;a17;2 $$6,6#27521748481378242620020725143825:desc]
[l321;C@5+75 $$7,7#20902679421464641399138805415013:code]
[b2503;2 $$8,0#65142375456100023862071332075487:separator]
[*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
[C2 $$10,0#37138531426314131251341829483380:class]
[l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement]
[i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam]
[b167;C2 $$13,13#92430459443460461911108080531343:item1]
[i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2]
[*@2$(0.128.128)2 $$15,15#34511555403152284025741354420178:NewsDate]
[l321;*C$7;2 $$16,16#03451589433145915344929335295360:result]
[l321;b83;a83;*C$7;2 $$17,17#07531550463529505371228428965313:result`-line]
[l160;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
[2 $$19,0#53580023442335529039900623488521:gap]
[C2 $$20,20#70211524482531209251820423858195:class`-nested]
[b50;2 $$21,21#03324558446220344731010354752573:Par]
[b83;*+117 $$22,22#1546C2CD4112BAB0A26C534D6F11ED13:subtitle]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US 
[s2; Build methods&]
[s3; Table of contents&]
[s0; &]
[s0; [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#1^ 1. Introduction]&]
[s0; [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#2^ 2. Changing build 
method]&]
[s0; [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#3^ 3. Configuring 
and creating new build methods]&]
[s0;     [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#3`_1^ 3.1 Overview]&]
[s0;     [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#3`_2^ 3.2 Creating]&]
[s0;     [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#3`_3^ 3.3 Configuring]&]
[s0;         [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#3`_3`_1^ 3.3.1 
Builder]&]
[s0;         [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#3`_3`_2^ 3.3.2 
C/C`+`+ build methods]&]
[s0;         [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#3`_3`_3^ 3.3.3 
Android build method]&]
[s0; [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#4^ 4. Build method 
file format]&]
[s0; [^topic`:`/`/ide`/app`/BuildMethods`_en`-us`#5^ 5. Special variables]&]
[s0; &]
[s3;:1: 1. Introduction&]
[s5;%- Build methods define how TheIDE and UMK compiles and builds 
a concrete project. Each build method can be configured in a 
dedicated settings window, and you can create multiple build 
methods `- each with its own independent configuration.&]
[s5; In each configuration, you can specify various options such 
as the compiler name, compilation flags, and build type (Release 
or Debug).&]
[s5; Together with packages, build methods lie at the very heart 
of the U`+`+ build system.&]
[s3;:2: 2. Changing build method&]
[s5; To change the build method, click the left arrow next to the 
control where the current build method is displayed. This is 
illustrated in the image below:&]
[s0; &]
[s0;= 
@@rawimage:3498&731
([encoded data, 74316 characters])
&]
[s0; &]
[s5; The right arrow is used to switch the build method mode. You 
can choose between Debug and Release builds.&]
[s3;:3: 3. Configuring and creating new build methods&]
[s22;:3`_1: 3.1 Overview&]
[s5; To configure or add new build methods, open the Build Methods 
configuration window. To do this, go to the main TheIDE menu 
bar, select [* Setup], and then choose [* Build Methods..]. If you 
have trouble finding these options, refer to the image below, 
which shows the exact menu items to select.&]
[s0; &]
[s0;= 
@@rawimage:3498&1413
([encoded data, 132124 characters])
&]
[s0; &]
[s22;:3`_2: 3.2 Creating&]
[s5; To add and create a new build method, right`-click on the [* Method] 
list and select [* Append row], as shown in the image below.&]
[s0; &]
[s0;= 
@@rawimage:3685&3175
([encoded data, 107876 characters])
&]
[s0; &]
[s5; Once the new build method has been added, specify a name for 
it and adjust its configuration accordingly.&]
[s22;:3`_3: 3.3 Configuring&]
[s22;:3`_3`_1: 3.3.1 Builder&]
[s5; After creating a new method, a blank window will appear. This 
window contains only one option:  [* Builder], which determines 
the type of build method. The options you can choose from are:&]
[s5;l128;i150;O0; [* GCC] `-  method that utilizing g`+`+ compiler&]
[s5;l128;i150;O0; [* CLANG] `- method that utilizing clang compiler&]
[s5;l128;i150;O0; [* MSVC`*] `- method dedicated to Microsoft Visual 
C compiler, each major version has separate builder&]
[s5;l128;i150;O0; [* Android] `- method dedicated to Android&]
[s22;:3`_3`_2: 3.3.2 C/C`+`+ build methods&]
[s5; The default build method type used for development in TheIDE 
and the U`+`+ framework is C/C`+`+. This type includes the GCC, 
CLANG, and MSVC`* builders, which have the same configuration 
options. The configuration options are:&]
[s5;l128;i150;O0; [* General options]&]
[s5;l256;i150;O0; [* Compiler name] `- The compiler executable file 
name.&]
[s5;l256;i150;O0; [* External debugger] `- The debugger executable 
file name.&]
[s5;l256;i150;O0; [* Common options] `- Common compiler options for 
both C and C`+`+.&]
[s5;l256;i150;O0; [* Common C`+`+ options] `- Compiler options for 
C`+`+ language files.&]
[s5;l256;i150;O0; [* Common C options] `- Compiler options for C language 
files.&]
[s5;l256;i150;O0; [* Common link options] `- Linker options.&]
[s5;l256;i150;O0; Common fixed flags&]
[s5;l128;i150;O0; [* Debug build options]&]
[s5;l256;i150;O0; [* Debug level] `- The amount of debug information 
generated by the compiler. Options are:&]
[s5;l384;i150;O0; None&]
[s5;l384;i150;O0; Minimal&]
[s5;l384;i150;O0; Full&]
[s5;l256;i150;O0; [* Use BLITZ] `- if enable packages are being compiled 
in Single Compilation Unit (SCU) mode for the debug build. This 
setting is used to significantly decrease compilation time.&]
[s5;l256;i150;O0; [* Libraries linking mode ]`- Determines the mechanism 
by which external libraries are incorporated into the final executable 
for the debug build. Options are:&]
[s5;l384;i150;O0; All static `- All components, including project 
packages and system libraries, are linked statically.&]
[s5;l384;i150;O0; Shared libs `- Project packages are linked statically, 
while system libraries are linked dynamically.&]
[s5;l384;i150;O0; All shared `- All components, including project 
packages and system libraries, are linked dynamically.&]
[s5;l256;i150;O0; [* Debug options] `- Compiler options for debug build.&]
[s5;l256;i150;O0; Debug fixed flags&]
[s5;l256;i150;O0; [* Debug link options] `- Linker options for the 
debug build.&]
[s5;l128;i150;O0; [* Release build options]&]
[s5;l256;i150;O0; [* Use BLITZ] `- If enabled, packages are compiled 
in Single Compilation Unit (SCU) mode for the release build. 
This setting is used to significantly decrease compilation time.&]
[s5;l256;i150;O0; [* Libraries linking mode] `- Determines the mechanism 
by which external libraries are incorporated into the final executable 
for the debug build. Options are:&]
[s5;l384;i150;O0; All static `- All components, including project 
packages and system libraries, are linked statically.&]
[s5;l384;i150;O0; Shared libs `- Project packages are linked statically, 
while system libraries are linked dynamically.&]
[s5;l384;i150;O0; All shared `-[*  ]All components, including project 
packages and system libraries, are linked dynamically.&]
[s5;l256;i150;O0; [* Release options ]`- Compiler options for the release 
build.&]
[s5;l256;i150;O0; Release fixed flags&]
[s5;l256;i150;O0; [* Release link options ]`- Linker options for the 
release build.&]
[s22;:3`_3`_3: 3.3.3 Android build method&]
[s5; The Android build method provides a different set of options 
compared to the standard C/C`+`+ build methods. Under the hood, 
it functions more like a package builder than a simple compiler 
wrapper.&]
[s5; The Android build method includes the following parameters:&]
[s5;l128;i150;O0; [* Executable Paths]&]
[s5;l256;i150;O0; [* JDK Path] `- the path to the Java Development 
Kit installation.&]
[s5;l256;i150;O0; [* Android SDK Path] `- the path to the Android Software 
Development Kit installation.&]
[s5;l256;i150;O0; [* Android NDK Path] `- the file path to the Android 
Native Development Kit installation.&]
[s5;l128;i150;O0; [* Android SDK settings]&]
[s5;l256;i150;O0; [* Platform version] `- Specifies the Android API 
Level (e.g., API 36 for Android 16) that your application will 
be compiled against. This determines the set of APIs and features 
available to your code.&]
[s5;l256;i150;O0; [* Build tools version] `- Specifies the version 
of the command`-line utilities (like aapt, dx, zipalign) used 
to build the Android package (APK or AAB).&]
[s5;l128;i150;O0; [* Android NDK settings]&]
[s5;l256;i150;O0; [* Use BLITZ `- ]If enabled, packages are compiled 
in Single Compilation Unit (SCU) mode for the release build. 
This setting is used to significantly decrease compilation time.&]
[s5;l256;i150;O0; [* Target architecture] `- Specifies the target architectures 
for compiling native source files. If the selected architectures 
do not match the Android device`'s CPU, the application will 
not run.  Options are&]
[s5;l384;i150;O0; armeabi`-v7a&]
[s5;l384;i150;O0; arm64`-v8a&]
[s5;l384;i150;O0; x86&]
[s5;l384;i150;O0; x86`-64&]
[s5;l256;i150;O0; Toolchain&]
[s5;l256;i150;O0; C`+`+ runtime&]
[s5;l256;i150;O0; [* Common C`+`+ options] `- Compiler options for 
C`+`+ language files.&]
[s5;l256;i150;O0; [* Common C options] `- Compiler options for C language 
files.&]
[s5; For more information, see the article on the [^topic`:`/`/ide`/app`/AndroidBuilder`_en`-us^ A
ndroid Builder].&]
[s3;:4: 4. Build method file format&]
[s5; On disk, a build method is represented as a text file, with 
each method stored in a separate file using the [*/ .bm] (build 
method) extension. These files contain exactly the same information 
shown in the UI. There are no hidden or undocumented options. 
The contents of the file vary depending on the build method type. 
For example, C/C`+`+ methods differ from Android methods.&]
[s5; Exemplary .bm file content for the C/C`+`+ build method:&]
[s0;l128;%- [C@(35.38.41)1 BUILDER `= `"CLANG`";]&]
[s0;l128;%- [C@(35.38.41)1 COMPILER `= `"clang`+`+`";]&]
[s0;l128;%- [C@(35.38.41)1 COMMON`_OPTIONS `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 COMMON`_CPP`_OPTIONS `= `"`-std`=c`+`+17 
`-Wno`-logical`-op`-parentheses`";]&]
[s0;l128;%- [C@(35.38.41)1 COMMON`_C`_OPTIONS `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 COMMON`_LINK `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 COMMON`_FLAGS `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 DEBUG`_INFO `= `"2`";]&]
[s0;l128;%- [C@(35.38.41)1 DEBUG`_BLITZ `= `"1`";]&]
[s0;l128;%- [C@(35.38.41)1 DEBUG`_LINKMODE `= `"1`";]&]
[s0;l128;%- [C@(35.38.41)1 DEBUG`_OPTIONS `= `"`-O0`";]&]
[s0;l128;%- [C@(35.38.41)1 DEBUG`_FLAGS `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 DEBUG`_LINK `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 RELEASE`_BLITZ `= `"1`";]&]
[s0;l128;%- [C@(35.38.41)1 RELEASE`_LINKMODE `= `"1`";]&]
[s0;l128;%- [C@(35.38.41)1 RELEASE`_OPTIONS `= `"`-O3 `-ffunction`-sections 
`-fdata`-sections`";]&]
[s0;l128;%- [C@(35.38.41)1 RELEASE`_FLAGS `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 RELEASE`_LINK `= `"`-Wl,`-`-gc`-sections`";]&]
[s0;l128;%- [C@(35.38.41)1 DEBUGGER `= `"gdb`";]&]
[s0;l128;%- [C@(35.38.41)1 ALLOW`_PRECOMPILED`_HEADERS `= `"0`";]&]
[s0;l128;%- [C@(35.38.41)1 DISABLE`_BLITZ `= `"0`";]&]
[s0;l128;%- [C@(35.38.41)1 PATH `= `"/home/klugier/7z;/home/klugier/just`";]&]
[s0;l128;%- [C@(35.38.41)1 INCLUDE `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 LIB `= `"`";]&]
[s0;l128;%- [C@(35.38.41)1 LINKMODE`_LOCK `= `"0`";]&]
[s5;C@(35.38.41)0%- &]
[s3;:5: 5. Special variables&]
[s5; Build methods supports special string that can be treated as 
special variable. These strings are preprocessed by TheIDE and 
UMK once running the build. The special variables are:&]
[s5;l128;i150;O0; [* `$`{METHOD`_DIR`}] `- Replaces the specified string 
with the full path to the directory containing the build method 
file. This applies to the PATH, INCLUDE, and LIB configuration 
options, and is useful when the build method is bundled with 
the UMK distribution. Such distributions are primarily intended 
for building U`+`+ framework applications from the terminal, 
excluding TheIDE.]]