(overview_root_compilation)= # Standard compilation For C++ enthusiasts, it is possible to use {{root}} (and subsequently {{uranie}}) as a set of libraries, and to compile an executable. In this case, you have to take care of linked libraries. In order to help the user, {{root}} provides a macro that give many of the needed flag to perform the compilation, both to give the path to the headers and the path to the libraries. ```bash g++ -o OutputName TheFileName.C `root-config --cflags --libs` ``` For this example: - OutputName: the name of the resulting executable - TheFileName.C: the C++ file containing the code - `root-config --cflags --libs`: this command provides all the necessary flags to compile most of the macros using {{root}}. This is a logic we acknowledge and try to follow as well for {{uranie}}: if one wants to compile an {{uranie}} macro, one can use two flags. - URANIECPPFLAG: it defines all the include path needed and add on top the ones from {{root}}; - URANIELDFLAG: it defines the linking option and path to library and add on top the ones from {{root}}; With this, an example of standalone compilation for a given macro `UranieMacro.C` will be: ```bash g++ -o OutputExecutable UranieMacro.C `echo ${URANIECPPFLAG} ${URANIELDFLAG}` ```