Compilar NAppGUI
En Inicio rápido ya vimos como compilar y ejecutar los ejemplos a partir del código fuente. Ahora nos enfocaremos en la instalación del SDK con el fin de empezar a crear nuestras propias aplicaciones. Partiremos dentro de la carpeta del proyecto previamente descargada:
|
git clone --depth 1 https://github.com/frang75/nappgui_src.git cd nappgui_src |
1. Enlace estático
Los siguientes comandos generarán la versión de enlace estático de las librerías que componen NAppGUI.
|
// 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 -DNAPPGUI_DEMO=NO -DCMAKE_BUILD_TYPE=Release cmake --build build -j 4 cmake --install build --config Release --prefix /usr/local/nappgui |
Para versiones de CMake inferiores a 3.13:
|
// Windows mkdir build & cd build cmake .. -DNAPPGUI_DEMO=NO -DCMAKE_INSTALL_PREFIX=C:/nappgui cmake --build . --config Release msbuild INSTALL.vcxproj /p:Configuration=Release // macOS mkdir build ; cd build cmake .. -G Xcode -DNAPPGUI_DEMO=NO -DCMAKE_INSTALL_PREFIX=/usr/local/nappgui cmake --build . --config Release xcodebuild -target install -configuration Release // Linux mkdir build ; cd build cmake .. -DNAPPGUI_DEMO=NO -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/nappgui cmake --build . make install |
2. Enlace dinámico
Si prefieres generar NAppGUI en modo de enlace dinámico (.dll, .so, .dylib), sigue estas indicaciones.
|
// 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 -DNAPPGUI_DEMO=NO -DNAPPGUI_SHARED=YES -DCMAKE_BUILD_TYPE=Release cmake --build build -j 4 cmake --install build --config Release --prefix /usr/local/nappgui |
Para versiones de CMake inferiores a 3.13:
|
// Windows mkdir build & cd build cmake .. -DNAPPGUI_DEMO=NO -DNAPPGUI_SHARED=YES -DCMAKE_INSTALL_PREFIX=C:/nappgui cmake --build . --config Release msbuild INSTALL.vcxproj /p:Configuration=Release // macOS mkdir build ; cd build cmake .. -G Xcode -DNAPPGUI_DEMO=NO -DNAPPGUI_SHARED=YES -DCMAKE_INSTALL_PREFIX=/usr/local/nappgui cmake --build . --config Release xcodebuild -target install -configuration Release // Linux mkdir build ; cd build cmake .. -DNAPPGUI_DEMO=NO -DNAPPGUI_SHARED=YES -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/nappgui cmake --build . make install |
Si utilizas NAppGUI en modo DLL deberás asegurar que tus futuras aplicaciones encuentren las librerías, actualizando la variable PATH
de cada sistema.
|
// Windows set PATH=C:\nappgui\bin;%PATH% // Linux export LD_LIBRARY_PATH=/usr/local/nappgui/bin:$LD_LIBRARY_PATH$ // macOS export DYLD_LIBRARY_PATH=/usr/local/nappgui/bin:$DYLD_LIBRARY_PATH$ |
3. Opciones de CMake
Indicamos a continuación todas las opciones de CMake soportadas por NAppGUI. En Generadores, compiladores e IDEs tendrás información más detallada.
|
cmake -G [Generator] -S [SourceDir] -B [BuildDir] [Options] |
-G
: Generadores CMake. Si se omite, se utilizará el valor deCMAKE_GENERATOR
o uno por defecto.-S
: Directorio donde se encuentra el archivoCMakeLists.txt
de NAppGUI.-B
: Directorio donde se generarán los proyectos de compilación y binarios.-DNAPPGUI_DEMO=[YES|NO]
: Genera las aplicaciones de ejemplo. Por defectoYES
.-DNAPPGUI_SHARED=[YES|NO]
: Genera librerías de enlace dinámico (.dll, .so, .dylib). Por defectoNO
.-DNAPPGUI_WEB=[YES|NO]
: Añade soporte nativo para el controlWebView
. Por defectoYES
. Ver Deshabilitar WebView.-DCMAKE_BUILD_TYPE=[Debug|Release]
: En generadores mono-configuración, pe. Unix Makefiles, configura el modo de compilación. Por defectoDebug
.-DCMAKE_C_COMPILER=[gcc|clang|cl]
: En Unix Makefiles, MinGW, MSYS o Ninja selecciona el compilador de C.-DCMAKE_CXX_COMPILER=[g++|clang++|cl]
: En Unix Makefiles, MinGW, MSYS o Ninja, selecciona el compilador de C++.-A=[Win32|x64]
: En Windows selecciona la arquitectura destino.-DCMAKE_ARCHITECTURE=[x64|i386|arm|arm64]
: En Linux o macOS selecciona la arquitectura destino. Por defecto, la de la máquina de compilación.arm
no está soportado en macOS.i386
está restringido en macOS. Ver macOS 32bits.-DCMAKE_OSX_DEPLOYMENT_TARGET=12.4
: En macOS, mínima versión del sistema operativo soportada. Por defecto, la mas moderna incluida en el compilador. Ver Xcode.-DCMAKE_TOOLKIT=GTK3
: En Linux indica el toolkit gráfico utilizado para renderizar los elementos de la interfaz. Por el momento, soloGTK3
.-DCMAKE_DISABLE_CRTDBG=YES
: Desactiva la libreríacrtdbg
en Windows que controla fugas de memoria durante la ejecución. En principio, no se recomienda su uso, pero puede ser útil en proyectos que utilicen librerías de terceros con objetos estáticos o singleton.
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] |
--build
: Directorio donde se encuentran los proyectos de compilación (parámetro-B
de la configuración).--config
: En generadores multi-configuració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. 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] |
--install
: Directorio donde se encuentran los binarios (parámetro-B
de la configuración).--config
: Configuración a empaquetar (Debug o Release).--prefix
: Directorio destino de la instalación. 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 (sin el --prefix
), 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 └── cmake ├── nappgui-config.cmake ├── ... |
En la carpeta /bin
se instalarán las DLLs, en el caso que hayamos elegido el enlace dinámico.
Los nombres de las librerías son diferentes en Windows (XXXX.lib) que en Linux/macOS (libXXXX.a).