# How to build & port GuiLite? ## How to build GuiLite libary for Windows? Prerequisite: Windows 10, visul stdio 2015/2017 - Open "GuiLite.sln" by Visual studio 2017 - Click `Build Solution` - Output here: \GuiLite\Debug(Release)\GuiLite.lib ## How to build GuiLite libary for iOS/Mac and Linux(amd64) & raspberry pi? - `cd GuiLite` - `cmake .` - `make` - Output here: /GuiLite/libGuiLite.a ## How to build GuiLite libary for ARM Linux? ### Prerequisite: Install cross compiler: - For ARM32: `sudo apt-get install g++-arm-linux-gnueabi gcc-arm-linux-gnueabi` - For ARM64: `sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu` ### Build - `cd GuiLite` - For ARM32: `cmake -D CMAKE_C_COMPILER="/usr/bin/arm-linux-gnueabi-gcc" -D CMAKE_CXX_COMPILER="/usr/bin/arm-linux-gnueabi-g++" .` - For ARM64: `cmake -D CMAKE_C_COMPILER="/usr/bin/aarch64-linux-gnu-gcc" -D CMAKE_CXX_COMPILER="/usr/bin/aarch64-linux-gnu-g++" .` - `make` - Output here: /GuiLite/libGuiLite.a ## How to build GuiLite libary for Android? ### Prerequisite: Install cross compiler: `sudo apt-get install gcc-arm-linux-androideabi` ### Build - `cd GuiLite` - `cmake -D CMAKE_C_COMPILER="/usr/bin/arm-linux-androideabi-gcc" -D CMAKE_CXX_COMPILER="/usr/bin/arm-linux-androideabi-g++" .` - `make` - Output here: /GuiLite/libGuiLite.a ## How to build GuiLite libary for any MCU? ### Prerequisite: Install Keil uvsion 5.6 or above. ### Build - Open `GuiLite.uvprojx` with Keil uvsion. - Implement function(e.g, thread_sleep) in `core\src\adapter\api_unknow.cpp` to meet your need. - Choose your Device type(Default: STM32F103ZE) from option for target. - Build GuiLite. - Output here: /GuiLite/Objects/GuiLite.lib ## How to port? Here are 2 options for porting. For option 1: you should build GuiLite library, and move all headers files & library to your project; For option 2: You do not need to build GuiLite library, just merge all GuiLite code into 1 header(GuiLite.h) & 1 source(GuiLite.cpp), then move the 2 files to your project. We recommend option 2, because of: - Easy to port - no need to buid library - Easy to move - just 2 files - Easy to manage header files - just 1 header file - Easy to debug - no library binary ### Option 1: Header & Library - Headers: core_include, widgets_include - Library: The GuiLite library 1. Move core_include/widgets_include to your project 2. Build GuiLite library by above building process 3. Link GuiLite library to your project 4. Rebuild your project ### Option 2: Header & Source 1. Execute `1h-1cpp.sh` to merge the whole source code into: 1 header(GuiLite.h) & 1 source(GuiLite.cpp) 2. Move GuiLite.h/GuiLite.cpp to your project 3. Rebuild your project