- Warning
- Esta característica aún está en desarrollo, y la API puede cambiar en futuras versiones. Se necesita tu contribución para ayudarnos a mejorar la compatibilidad y usabilidad de los módulos C++ en FTXUI. Si encuentras algún problema o tienes sugerencias, por favor, abre un issue.
FTXUI soporta experimentalmente módulos C++20 para reducir los tiempos de compilación y mejorar la organización del código. Cada parte de la biblioteca tiene un módulo correspondiente, dividido en particiones por cada cabecera.
Usa la opción FTXUI_BUILD_MODULES para construir el propio proyecto FTXUI y proporcionar módulos C++20, por ejemplo con CMake y Ninja:
cmake \
-DCMAKE_GENERATOR=Ninja \
-DFTXUI_BUILD_MODULES=ON \
..
ninja
- Note
- Para usar módulos, necesitas un compilador compatible con C++≥20, CMake versión 3.20 o superior, y usar un generador compatible como Ninja. Ten en cuenta que los generadores Makefile no soportan módulos.
Luego, en tu propio código puedes consumir los módulos y el código de forma normal:
using ftxui::Button;
auto screen = ScreenInteractive::TerminalOutput();
auto button = Button(
"Click me",
screen.QuitClosure());
return 0;
}
ScreenInteractive es una Screen que puede manejar eventos, ejecutar un bucle principal y administrar ...
Archivo de módulo que reexporta todos los submódulos de FTXUI.
Nota, el módulo de conveniencia ftxui que simplemente agrupa todos los módulos:
Archivo del módulo para operaciones de componentes de FTXUI.
Archivo de módulo para operaciones DOM de FTXUI.
Archivo de módulo para las operaciones de pantalla de FTXUI.
Archivo de módulo para operaciones de utilidad de FTXUI.
Puedes importar solo el módulo o módulos que necesites si lo deseas.
Para encontrar y enlazar correctamente los módulos con CMake, usa target_link_libraries para obtener las banderas de compilador, enlazador, etc. correctas.
target_link_libraries(my_executable
#...whatever...
PRIVATE ftxui::modules
)
Lista de módulos
Los módulos hacen referencia directa a la cabecera correspondiente, o a un grupo de cabeceras relacionadas para proporcionar una interfaz más conveniente. Los siguientes módulos están disponibles: