230 lines
5.6 KiB
Markdown
230 lines
5.6 KiB
Markdown
How to use lutin {#lutin_use}
|
|
================
|
|
|
|
@tableofcontents
|
|
|
|
Lutin permit simply to compile applications and library.
|
|
|
|
To simply understand the use, we will use a simple library:
|
|
|
|
```{.sh}
|
|
git clone http://github.con/atria-soft/etk.git
|
|
```
|
|
|
|
|
|
compile a module: {#lutin_use_compile}
|
|
=================
|
|
|
|
It is really simple:
|
|
|
|
```{.sh}
|
|
lutin yourModuleName
|
|
#example:
|
|
lutin etk
|
|
```
|
|
|
|
|
|
|
|
Option working: {#lutin_use_options}
|
|
===============
|
|
|
|
Lutin have a complex option methodologie. We can consider 3 part of the option:
|
|
- global option
|
|
- target option
|
|
- modules
|
|
|
|
|
|
Global options: {#lutin_use_options_global}
|
|
---------------
|
|
|
|
Globals option is parse first and manage global setting of the build (not specific of a target)
|
|
|
|
this keep the last value config set
|
|
|
|
|
|
Display help: {#lutin_use_options_help}
|
|
-------------
|
|
|
|
Availlable everywhere ...
|
|
|
|
```{.sh}
|
|
lutin -h
|
|
lutin --help
|
|
```
|
|
|
|
You can see in this help that it take a litle time to react.
|
|
The first time you run lutin, it parse all the file in your sub-directory.
|
|
But the system(OS) keep the data in cash, then the next time it is faster.
|
|
|
|
At the end of the help you an see an help about the etk librery with the associated help.
|
|
|
|
Build in color: {#lutin_use_options_color}
|
|
---------------
|
|
|
|
```{.sh}
|
|
lutin -C
|
|
lutin --color
|
|
```
|
|
|
|
Display build line in pretty print mode: {#lutin_use_options_pretty}
|
|
----------------------------------------
|
|
|
|
when an error apear, the gcc or clang compile line can be really unreadable:
|
|
```{.sh}
|
|
g++ -o /home/heero/dev/plop/out/Linux_x86_64/release/build/gcc/etk/obj/etk/Color.cpp.o -I/home/heero/dev/plop/etk -std=c++11 -D__CPP_VERSION__=2011 -D__TARGET_OS__Linux -D__TARGET_ARCH__x86 -D__TARGET_ADDR__64BITS -D_REENTRANT -DNDEBUG -O3 -fpic -D__STDCPP_GNU__ -Wall -Wsign-compare -Wreturn-type -Wno-write-strings -Woverloaded-virtual -Wnon-virtual-dtor -Wno-unused-variable -DMODE_RELEASE -c -MMD -MP /home/heero/dev/plop/etk/etk/Color.cpp
|
|
```
|
|
|
|
whith this option you can transform this not obvious line in a readable line:
|
|
|
|
```{.sh}
|
|
lutin -P
|
|
lutin --pretty
|
|
```
|
|
|
|
result:
|
|
```{.sh}
|
|
g++ \
|
|
-o /home/XXX/dev/out/Linux_x86_64/release/build/gcc/etk/obj/etk/Color.cpp.o \
|
|
-I/home/XXX/dev/etk \
|
|
-std=c++11 \
|
|
-D__CPP_VERSION__=2011 \
|
|
-D__TARGET_OS__Linux \
|
|
-D__TARGET_ARCH__x86 \
|
|
-D__TARGET_ADDR__64BITS \
|
|
-D_REENTRANT \
|
|
-DNDEBUG \
|
|
-O3 \
|
|
-fpic \
|
|
-D__STDCPP_GNU__ \
|
|
-Wall \
|
|
-Wsign-compare \
|
|
-Wreturn-type \
|
|
-Wno-write-strings \
|
|
-Woverloaded-virtual \
|
|
-Wnon-virtual-dtor \
|
|
-Wno-unused-variable \
|
|
-DMODE_RELEASE \
|
|
-c \
|
|
-MMD \
|
|
-MP \
|
|
/home/XXX/dev/etk/etk/Color.cpp
|
|
```
|
|
|
|
lutin log: {#lutin_use_options_log}
|
|
----------
|
|
|
|
Lutin have an internal log system. To enable or disable it just select your debug level with the option:
|
|
|
|
```{.sh}
|
|
lutin -v4
|
|
lutin --verbose 4
|
|
```
|
|
|
|
The level availlables are:
|
|
- 0: None
|
|
- 1: error
|
|
- 2: warning (default)
|
|
- 3: info
|
|
- 4: debug
|
|
- 5: verbose
|
|
- 6: extreme_verbose
|
|
|
|
Select the number of CPU core used: {#lutin_use_options_cpu}
|
|
-----------------------------------
|
|
|
|
By default lutin manage only 1 CPU core (faster to debug) but for speed requirement you can use use multiple core:
|
|
|
|
```{.sh}
|
|
#for 5 core
|
|
lutin -j5
|
|
lutin --jobs 5
|
|
```
|
|
|
|
Force rebuild all: {#lutin_use_options_rebuild_force}
|
|
------------------
|
|
|
|
Sometime it is needed to rebuild all the program, just do:
|
|
|
|
```{.sh}
|
|
lutin -B
|
|
lutin --force-build
|
|
# or remove the build directory
|
|
rm -rf out/
|
|
```
|
|
|
|
Force strip all library and programs: {#lutin_use_options_strip}
|
|
-------------------------------------
|
|
|
|
Force strip of output binary (remove symboles)
|
|
|
|
```{.sh}
|
|
lutin -s
|
|
lutin --force-strip
|
|
```
|
|
|
|
Manage Cross compilation: {#lutin_use_options_cross_compile}
|
|
=========================
|
|
|
|
The main objective of lutin is managing the cross compilation to build from linux to other platform:
|
|
|
|
For android you can use:
|
|
|
|
```{.sh}
|
|
lutin -t Android your-module
|
|
lutin -t Windows your-module
|
|
```
|
|
|
|
Build in debug mode: {#lutin_use_options_debug_release}
|
|
====================
|
|
|
|
To developp it is fasted with debug tools
|
|
|
|
```{.sh}
|
|
lutin -m debug your-module
|
|
lutin -m release your-module
|
|
```
|
|
|
|
You can desire to have compilation optimisation when you build in debug mode:
|
|
|
|
```{.sh}
|
|
lutin -m debug --force-optimisation your-module
|
|
```
|
|
|
|
Execute your program after building it: {#lutin_use_options_execute}
|
|
=======================================
|
|
|
|
You can execute some action in a single line for a module:
|
|
|
|
```bash
|
|
lutin -m debug your-module?clean?build?run:--run-option1:--run-option2
|
|
```
|
|
|
|
Why use ```?run``` istead of direct calling the binary?
|
|
|
|
This is simple: you does nok knoww where the binary is installed... when you build for linux in debug it will be set in ```out/Linux_x86_64/debug/staging/clang/edn/edn.app/``` for edn application.
|
|
Note that the path is distinct for gcc/clang, debug/release, Linux/windows/Android/..., 64/32 bits, and for every applications ...
|
|
|
|
Then it is really easy to run the wrong binary.
|
|
|
|
|
|
Install your program after building it: {#lutin_use_options_install}
|
|
=======================================
|
|
|
|
You can install your build module:
|
|
|
|
```{.sh}
|
|
lutin -m debug your-module?build?install
|
|
```
|
|
|
|
This option is not availlablke on all platform ...
|
|
|
|
|
|
|
|
|
|
**Index:**
|
|
- @ref mainpage
|
|
- @ref lutin_concept
|
|
- @ref lutin_use
|
|
- @ref lutin_module
|
|
|