Compilar NAppGUI desde código fuente
En Inicio rápido ya vimos como compilar y ejecutar los ejemplos a partir del código fuente. En este capítulo y en Compiladores e IDEs profundizaremos en el proceso de compilación, instalación y portabilidad entre plataformas. Una vez instalado el SDK, puedes continuar en Crear nueva aplicación.
1. Compilar librerías estáticas
|
git clone --depth 1 https://github.com/frang75/nappgui_src.git cd nappgui_src // Windows cmake -S . -B build -DNAPPGUI_DEMO=NO cmake --build build --config Release -j 4 cmake --install build --config Release --prefix C:/nappgui // macOS cmake -G Xcode -S . -B build -DNAPPGUI_DEMO=NO cmake --build build --config Release -j 4 cmake --install build --config Release --prefix /usr/local/nappgui // Linux cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j 4 cmake --install build --config Release --prefix /usr/local/nappgui |
2. Compilar librerías dinámicas
|
git clone --depth 1 https://github.com/frang75/nappgui_src.git cd nappgui_src // Windows cmake -S . -B build -DNAPPGUI_DEMO=NO -DNAPPGUI_SHARED=YES cmake --build build --config Release -j 4 cmake --install build --config Release --prefix C:/nappgui // macOS cmake -G Xcode -S . -B build -DNAPPGUI_DEMO=NO -DNAPPGUI_SHARED=YES cmake --build build --config Release -j 4 cmake --install build --config Release --prefix /usr/local/nappgui // Linux cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DNAPPGUI_SHARED=YES cmake --build build -j 4 cmake --install build --config Release --prefix /usr/local/nappgui |
3. Opciones de configuración
Inicialmente, CMake debe preparar los proyectos de compilación.
|
cmake -G [Generator] -S [SourceDir] -B [BuildDir] [Options] |
- -G: Generadores CMake. Si se omite, se utilizará el valor de
CMAKE_GENERATOR
o uno por defecto. - -S: Directorio donde se encuentra el archivo
CMakeLists.txt
de NAppGUI. - -B: Directorio donde se generarán los proyectos de compilación y binarios.
- -DNAPPGUI_DEMO=NO: No genera las aplicaciones de ejemplo. Tan solo las librerías esenciales del SDK.
- -DCMAKE_BUILD_TYPE=Release: En generadores mono-configuración, pe. Unix Makefiles, configura para compilar en modo release. Por defecto: Debug.
- -DNAPPGUI_SHARED=YES: Genera librerías de enlace dinámico (.dll, .so, .dylib), en lugar de enlace estático (por defecto).
4. Opciones de compilación
Una vez generados los scripts en el paso anterior, lanzamos la compilación mediante CMake.
|
cmake --build [BuildDir] --config [Debug|Release] -j [NumProcs] |
- BuildDir: Directorio donde se encuentran los proyectos de compilación (-B en la configuración).
- --config: En generadores multiconfiguración, pe. Visual Studio, indica que configuración compilar (Debug o Release).
- -j: Número de procesos o hilos concurrentes de compilación.
Tras la compilación tendremos en [BuildDir]/[Debug|Release]/bin
los ejecutables y librerías dinámicas generadas. En /lib
las librerías estáticas.
5. Empaquetado e instalación
Tras la compilación empaquetamos los binarios y cabeceras con el fin de tenerlos disponibles a la hora de crear nuestras propias aplicaciones.
|
cmake --install [BuildDir] --config [Debug|Release] --prefix [PackagePath] |
- BuildDir: Directorio donde se encuentran los proyectos de compilación (-B en la configuración).
- --config: Configuración a empaquetar (Debug o Release).
- PackagePath: Directorio destino del paquete. Si se omite, CMake utilizará los directorios de sistema por defecto:
/usr/local
en UNIX oC:/Program Files/${PROJECT_NAME}
en Windows.
Para instalar en los directorios de sistema, es posible que tengamos que ejecutar cmake install en modo administrador.
En la ruta de destino tendremos esta estructura de archivos y directorios:
|
nappgui ├── bin │ ├── nrc ├── inc │ ├── core │ │ ├── array.h │ │ ├── arrpt.h │ │ ├── ... │ ├── draw2d │ │ ├── color.h │ │ ├── dctx.h │ │ ├── ... │ ├── geom2d │ │ ├── box2d.h │ │ ├── box2d.hpp │ │ ├── ... │ ├── gui │ │ ├── button.h │ │ ├── cell.h │ │ ├── ... │ ├── inet │ │ ├── base64.h │ │ ├── httpreq.h │ │ ├── ... │ ├── nappgui.h │ ├── osapp │ │ ├── osapp.def │ │ ├── osapp.h │ │ ├── ... │ ├── osbs │ │ ├── bfile.h │ │ ├── bmutex.h │ │ ├── ... │ ├── osgui │ │ ├── osbutton.h │ │ ├── oscombo.h │ │ ├── ... │ ├── sewer │ │ ├── arch.hxx │ │ ├── blib.h │ │ ├── ... ├── lib │ ├── libcore.a │ ├── libdraw2d.a │ ├── libgeom2d.a │ ├── libgui.a │ ├── libinet.a │ ├── libosapp.a │ ├── libosbs.a │ ├── libosgui.a │ ├── libsewer.a └── prj ├── CMakeTarget.cmake ├── ... └── version.txt |