topic "Getting started with TheIDE";
[l288;i704;a17;O9;~~~.992;2 $$1,0#10431211400427159095818037425705:param]
[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
[H4;b83;*4 $$3,5#07864147445237544204411237157677:title]
[b167;a42;C2 $$4,6#40027414424643823182269349404212:item]
[b42;a42;ph2 $$5,5#45413000475342174754091244180557:text]
[l288;a17;ph2 $$6,6#27521748481378242620020725143825:desc]
[l321;t246;C@5+75 $$7,7#20902679421464641399138805415013:code]
[b2503;2 $$8,0#65142375456100023862071332075487:separator]
[*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
[t4167;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;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
[l192;i150;a42;phO2;2 $$19,19#37291126451403010472971723210990:point]
[i167;phO9;2 $$20,20#33190467493505743255250994711132:step]
[b83;*+117 $$21,21#2AC2FD302E8CD436942CC99374D81489:SubTitle]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US 
[s2; Getting started with TheIDE&]
[s3; Table of contents&]
[s0; &]
[s0; [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#1^ 1. Launching 
TheIDE]&]
[s0; [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#2^ 2. Assemblies 
and Packages]&]
[s0;     [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#2`_1^ 2.1 Selecting 
assembly]&]
[s0;     [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#2`_2^ 2.2 Creating 
new package]&]
[s0; [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#3^ 3. Configuring 
package]&]
[s0; [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#4^ 4. Creating 
new file]&]
[s0; [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#5^ 5. Adding dependency 
to package]&]
[s0; [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#6^ 6. Explanations 
about TheIDE]&]
[s0;     [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#6`_1^ 6.1 What 
is stored where?]&]
[s0;     [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#6`_2^ 6.2 Package 
organizer]&]
[s0;     [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#6`_3^ 6.3 Build 
methods]&]
[s0;     [^topic`:`/`/ide`/app`/GettingStarted`_en`-us`#6`_4^ 6.4 Output 
mode]&]
[s0; &]
[s3;:1: 1. Launching TheIDE&]
[s5; After installing U`+`+ find the appropriate TheIDE executable 
file and launch it. By default the file should be localized in 
the installation directory. However, it depends on the operating 
system and the way you installed U`+`+.&]
[s0; &]
[s3;:2: 2. Assemblies and Packages&]
[s5; In this section we show how to create your own main package. 
It can be treated as project, solution etc.&]
[s0; &]
[s21;:2`_1: 2.1 Selecting assembly&]
[s5; After you launch TheIDE on the screen window should appear. 
This window acts as a hub. When you can select/create packages 
and assemblies. You can back to this window at any time when 
you are working with TheIDE. Just select from main menu `"File`" 
entry and select `"Set main package`" option.&]
[s5; First of all, select assembly which is called `"MyApps`". It 
exists by default and it is intended to store user application. 
To select this assembly click on its name once. If you want to 
read more about assemblies see [^topic`:`/`/ide`/app`/PackagesAssembliesAndNests`$en`-us^ t
his reference page] for more details. In brief assembly is a 
collection of packages.&]
[s5; &]
[s0;=l160; 
@@rawimage:3475&2319
([encoded data, 22864 characters])
&]
[s5; &]
[s5; In this window you can perform the following operations:&]
[s19; You can create a new assembly by right`-clicking on the assembly 
list and choosing `"New assembly`". If you select an existing 
assembly before this, the directory settings from the existing 
assembly will be used.&]
[s19; If you`'re just getting started, leave this as it is and continue 
creating package process.&]
[s5; &]
[s21;:2`_2: 2.2 Creating new package&]
[s5; To create a new package, press the `"New package`" button localized 
on the bottom of the window. After that on the screen appears 
the package creator.&]
[s5; &]
[s0;= 
@@rawimage:3590&2543
([encoded data, 30504 characters])
&]
[s5; &]
[s5; To create new package you should execute following steps:&]
[s19; Enter a package name, for this example we`'ll type `"main`", 
leave the `"create in`" directory as it is for now (i.e. on MyApps 
directory).&]
[s19; Optionally you can fill in a short description of the package, 
that will appear in the package selection dialog.&]
[s19; It is possible to choose one of predefined templates, but we 
leave it on <empty> for now.&]
[s19; Finally, press the `"Create`" button on the bottom of the window.&]
[s0; &]
[s3;:3: 3. Configuring package&]
[s5; At the beginning, let`'s assume that the package you have created 
is main. Please note, that any package created or selected within 
manager is by default main. To configure it, select `"Main package 
configuration`" from the `"Project`" menu. Alternatively, you 
can right mouse click on package list and select the same option.&]
[s5;  &]
[s0;= 
@@rawimage:3400&1194
([encoded data, 7068 characters])
&]
[s5; &]
[s5; Let`'s take a look at the possibilities available in `"Main 
package configuration`" window:&]
[s19; Here you should set the [^topic`:`/`/ide`/app`/Flags`$en`-us^ configuration 
flags] that your program needs.&]
[s19; For the main package, you must specify at least one possible 
configuration (otherwise you will not see your new package listed 
under the `"MyApps`" assembly `- unless you select `"all packages`" 
`- because only main packages are listed by default).&]
[s19; Just add an empty row for now (right click`->`"Append row`" 
or press Insert key). The `"optional name`" can be left empty 
or you can enter any meaningful description for your own reference.&]
[s19; [/ Note: For windows users: If you add `"GUI`" flag here, the standard 
cin/cout/cerr will not be connected to anything. (so even if 
you start the program from the command line you will not see 
any text`-output).]&]
[s19; Press OK.&]
[s5; Here is a need of small digression. Several predefined templates 
mention in the previous chapter have main package setup by default. 
It means that there is not need to execute above steps. Following 
templates fall under above definition: Basic [*/ `"CtrlLib application`"], 
[*/ `"Core console project`"] and [*/ `"Skylark web application`"].&]
[s5; Not main package can be used as supportive module for your projects. 
You can place their common functions and classes and share between 
other packages. In this way packages delivered by U`+`+ work 
like Core and CtrlLib.&]
[s5; &]
[s3;:4: 4. Creating new file&]
[s5; You can now add files to you package, for this example, add 
a new file `"main.cpp`" to the package. Below is the list of 
steps that will guild you through the process:&]
[s19; Right click on the lower`-left part of TheIDE (or on `"File`" 
in menu) and choose `"Insert package directory file(s)`", type 
`"main.cpp`" and click `"Open`". If the file does not exist, 
it will be created `- that is why you won`'t find `"New file`" 
anywhere in TheIDE, it is just not needed.&]
[s5; &]
[s0;= 
@@rawimage:3894&2524
([encoded data, 61388 characters])
&]
[s5; &]
[s19; Alternatively, in the newer versions of TheIDE, you can create 
new file using `"New`" option from the same menu shown in above 
image. Then simply select file type and choose name for it. This 
method is recommended for newer user, because it is a little 
bit more intuitive and straight forward than creating file by 
insertion (old way).&]
[s19; Type or copy following code into the newly created file:&]
[s0; &]
[s7; -|#include <iostream>&]
[s7; -|&]
[s7; -|int main()&]
[s7; -|`{&]
[s7; -|-|char dummy;&]
[s7; -|-|std`::cerr << `"Hello, platform! `" << std`::endl;&]
[s7; -|-|std`::cin >> dummy;&]
[s7; -|-|&]
[s7; -|-|return 0;&]
[s7; -|`}&]
[s0; &]
[s19; If you have configured your compiler previously (you probably 
did, either the installer instructed you how to do it or it was 
done automatically), you can start the program by clicking on 
execute 
@@rawimage:100&100
(iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAAAAAAAAAHqZRakAAACEElEQVQ4jaWSz0tUURTHP+e+MTCzsAQHUatJCI2gRWkkhRBFLYpWQbRw0ybaWAtdSC0CoSBCBP+AVuUqiBZt2kRFRbUIIqIg/EGtLEadeTP33XtOi+dUS6UDBy6Hy+d8vnDgP0vOjt6/cmz40O1fKS1mgCqmStSIqaGmWIyoGRYjUZXWJl/5+Glx/NHUhZnCwNDA9KbmFtfRvKHFLdWqTgMzhTSYS3+ublg9DeYAChaNyYu9GwZcujVHDjAFwIeIAaZGVFAMVSOqEoPlbYqPxu5iK1FjDsAMAHGCmGFOMDFEBecEEYdIRBIjUUch5P815ADXIDlARBAnJE5wiSAOEgdNScLk41NMPDyCJVkOiLm5M82JiPwBOcm3J4mQCDgH9eDpau9jdHYQH2poI0LjwZoBAGaMPRjGLOA14EOgs62XvuIgK7UKZ2ZKtNlUDghZ9sdAADNDRAjqObFvhGj5USnG9/IC+7uGWPUp79IRSuNsK9halgSwRhQzasETTZlb+kKmgaAZWcxYrq9woPsoq1mVV+nzpYKq/o2w1ohQCzVCDHRs7SFoJJryozzP9i1F3i+84PXXD1TrHJRzV2dni92d5zVGNCoxRlSV5fbL1LzHq6cWPHva+zlcOsnb+Zc8+/yGndVrT57evXF63ZfXf5PKyL3j1jPB4o4x9v5rva7adZ2KarK5XI+l8h2+Nea/AbjMJEcWh0TKAAAAAElFTkSuQmCC)
 icon localized on main tool bar or by pressing CTRL`+F5.&]
[s19; After program launch, you can close it by typing any letter. 
On the other hand, it can be ended by simply closing terminal 
window.&]
[s19; Now you know how to use TheIDE to compile basic C`+`+ program. 
Looking at the rest of documentation will give you better idea 
how to unleash the full power of TheIDE and U`+`+. The best parts 
to continue would be probably [^topic`:`/`/ide`/app`/PackagesAssembliesAndNests`$en`-us^ P
ackages, Assemblies and Nests] and [^topic`:`/`/ide`/app`/ConfiguringPackagesAssemblies`$en`-us^ t
heir configuration.] something about the key technologies utilized 
in TheIDE: [^topic`:`/`/ide`/app`/Assist`$en`-us^ Assist`+`+], [^topic`:`/`/ide`/app`/Topic`$en`-us^ T
opic`+`+], [^topic`:`/`/ide`/app`/Blitz`$en`-us^ Blitz] or even 
one of the tutorials linked from Manual section, if you want 
to learn more about how to use U`+`+.&]
[s0; &]
[s3;:5: 5. Adding dependency to package&]
[s5; You could extend your package code base by adding additional 
dependencies. Package at the begging uses very limited set of 
dependencies. If you use empty package template then there are 
no relationship with other packages. On the other hand package 
created with CtrlLib template will posses dependencies to GUI 
packages.&]
[s5; Let`'s assume that we have the empty package `'main`' that we 
created at the begging of this article. Now if we would like 
to use zip compression provided by U`+`+ framework all we need 
to do is add package `"plugin/zip`" to our main package. This 
newly added package is a part of uppsrc assembly.&]
[s5; Dependency relationship between packages can be established 
in two different ways:&]
[s5;l128;i150;O0; By right`-clicking on package in your project and 
selecting option `"Add package to `$`{package`_name`}`". Where 
`$`{package`_name`} is currently selected package. You must be 
careful to which package are you adding dependency.&]
[s5;l128;i150;O0; By selecting package inside TheIDE and then opening 
`"Project`" menu and selecting `"Add package to `$`{package`_name`}`".&]
[s0; &]
[s0;= 
@@rawimage:1856&2000
([encoded data, 77024 characters])
&]
[s0; &]
[s5; After that the window with package (dependency) to add should 
opened. Right now all we need to do is to find package we are 
interested in. In our case it is `"plugin/zip`". To speed up 
the whole process `"Search`" field can be used. After finding 
the package to accept the operation click on `"OK`" button.&]
[s0; &]
[s0;= 
@@rawimage:2821&1978
([encoded data, 128836 characters])
&]
[s0; &]
[s5; Now the `"plugin/zip`" package is added as dependency to the 
main package. If we would like to refer to dependency in the 
source code all we need to do is to include main package header 
file. In our case it is:&]
[s0; &]
[s7; #include <plugin/zip/zip.h>&]
[s0; &]
[s5; In U`+`+ world supportive package should have one main header. 
It makes using such package much more straightforward. For more 
information please read article about [^topic`:`/`/ide`/app`/PackagesAssembliesAndNests`_en`-us^ p
ackages, assemblies and nests].&]
[s5; For advanced package management you should use `"Package organizer`". 
It will be described later in the article.&]
[s3;:6: 6. Explanations about TheIDE&]
[s21;:6`_1: 6.1 What is stored where?&]
[s5; When you use TheIDE for the first time, it can be confusing 
to see that settings like static/shared building, execute`-, 
include`- and linker`- paths can be set in multiple places (for 
instance, in Project`->Package organizer, in Setup`->Build methods 
and by clicking on the current build method in the main screen 
(at the top, e.g. `"GCC Debug`").&]
[s5; In the next part of this paragraph, we look at all configuration 
options.&]
[s21;:6`_2: 6.2 Package organizer&]
[s5; Package organizer is localized at `"Project `-> Package organizer`".&]
[s5; &]
[s0;= 
@@rawimage:3766&2611
([encoded data, 40892 characters])
&]
[s5; &]
[s5; Everything set here is stored in the .upp file of the package.&]
[s5; You can use your own (or existing) compiler switches to include 
different things for different builds here, based on configuration 
flags.&]
[s5; Examples:&]
[s5; &]
[ {{1122:2364:6514<288;h1;@(204) [s0; [* When]]
:: [s0; [* Libraries]]
:: [s0; [*/ Comment]]
::@2 [s0; MSC]
:: [s0; SDL]
:: [s0; [/ some extra library to link to with VC`+`+ compiler]]
:: [s0; MSC]
:: [s0; SDL`_ttf]
:: [s0;/ ]
:: [s0; MINGW]
:: [s0; mingw32]
:: [s0;/ ]
:: [s0; MINGW]
:: [s0; SDL.dll]
:: [s0; [/ mingw compiler has special feature to link directly to dll 
files]]
:: [s0; MINGW]
:: [s0; SDL`_ttf.dll]
:: [s0;/ ]}}&]
[s5; &]
[ {{1120:2385:6495<288;h1;@(204) [s0; [* When]]
:: [s0; [* Compiler options]]
:: [s0; [*/ Comment]]
::@2 [s0; MSC]
:: [s0; /Ot]
:: [s0; [/ additional compiler option for VC`+`+.]]}}&]
[s5; &]
[ {{1103:2386:6511<288;h1;@(204) [s0; [* When]]
:: [s0; [* Linker options]]
:: [s0; [*/ Comment]]
::@2 [s0; MSC]
:: [s0; `-nologo]
:: [s0; [/ some extra linker options when compiler is VC`+`+.]]}}&]
[s5; &]
[s21;:6`_3: 6.3 Build methods&]
[s5; Build methods are localized at `"Setup`-> Build methods`".&]
[s5; &]
[s0;= 
@@rawimage:3812&3129
([encoded data, 53612 characters])
&]
[s5; &]
[s5; Look carefully at the settings here. You can create different 
build methods for different compilers.&]
[s5; Each method will store it`'s settings in a .bm file. The .bm 
(bm stands for build method) files are stored in `~/.theide on 
Posix systems and in the executable path of TheIDE on MS Windows.&]
[s5; The boxes at the top of the windows called `"Debug mode default`" 
and `"Release mode default`" do [* NOT] contain the options actually 
used for the current build. (they are not in effect when your 
press F5). These are the default values used for new projects, 
the options for the current build can be set by clicking on the 
current build method in the main screen (top of the screen e.g. 
`"GCC Debug`").&]
[s5; &]
[s0;= 
@@rawimage:3969&885
([encoded data, 27368 characters])
&]
[s5; &]
[s5; Notice that it has two `"pull`-down`" arrows. The left one selects 
the build method. The right one sets the current build mode, 
which occurs in two variants `"Debug`" and `"Release`".&]
[s21;:6`_4: 6.4 Output mode&]
[s5; You will need to click on build method name on main TheIDE tool 
bar. It is shown on above image with `"MINGW Debug`" method.&]
[s5; &]
[s0;= 
@@rawimage:3155&2538
([encoded data, 38908 characters])
&]
[s0; &]
[s5; Link mode &]
[s19; [* All static] `- static external libraries are preferred. This 
is default and recommended option for windows environment.&]
[s19; [* Shared libs] `- shared external libraries are preferred, but 
the program`'s packages will be linked statically. This is default 
and recommended option for POSIX environments.&]
[s19; [* All shared] `- both the external libraries and the applications 
packages will be compiled and linked dynamically.&]
[s5; Target override&]
[s19; You can specify a target`-location for the resulting binary 
here. By default it will be writing to following path:&]
[s19;O_; [/ `"C:`\upp`\out`\`$target`\MINGW.Blitz.Debug.Shared.So.Win32`\foo.exe`".]]]