Documentación | Demostraciones | Otras bibliotecas
Cross Window es una biblioteca de abstracción del sistema de plataforma cruzada para administrar Windows y realizar tareas del sistema operativo. Está diseñado para ser fácil de integrar, intuitivo y apoyar todo lo que pueda necesitar para sus aplicaciones.
? Ventana simple, diálogo de archivos y creación de diálogo de mensajes.
⌨️? ️? ? Entrada básica (teclado, mouse, tacto y gamepad).
? Características específicas de la plataforma (transparencia MAC, acelerómetro móvil, etc.).
? Pruebas unitarias + cobertura de prueba (AppVeyor para Windows , Circleci para Android / MacOS / iOS , [Travis] [Travis-URL] para Linux / NOOP ).
? ️ Windows - Win32
? Mac - Cocoa
iOS - UIKit
? Linux - XCB o XLib
? Android (en progreso)
WebAssembly - Emscripten
Noop (sin cabeza)
Primero agregue el repositorio como un submódulo en su carpeta de dependencias, como external/ ::
# ⤵️ Add your dependency as a git submodule:
git submodule add https://github.com/alaingalvan/crosswindow.git external/crosswindow Luego, en su archivo CMakeLists.txt , incluya lo siguiente:
# ⤵️ Add to your CMake Project:
add_subdirectory (external/crosswindow)
# ❎ When creating your executable use CrossWindow's abstraction function:
xwin_add_executable(
# Target
${PROJECT_NAME}
# Source Files (make sure to surround in quotations so CMake treats it as a list)
" ${SOURCE_FILES} "
)
# ? Link CrossWindow to your project:
target_link_libraries (
${PROJECT_NAME}
CrossWindow
) Complete el resto de su archivo CMakeLists.txt con cualquier otro archivo y dependencias de origen que pueda tener, luego en su proyecto Root:
# ?️ To build your Visual Studio solution on Windows x64
cmake -B build -A x64
# ? To build your XCode project On Mac OS for Mac OS
cmake -B build -G Xcode
# To build your XCode project on Mac OS for iOS / iPad OS / tvOS / watchOS
cmake -B build -G Xcode -DCMAKE_SYSTEM_NAME=iOS
# ? To build your .make file on Linux
cmake -B build
# ? Build on any platform:
cmake -B build --buildPara WebAssembly necesitará tener instalado Emscripten. Suponiendo que tenga instalado el SDK, haga lo siguiente para crear un proyecto WebAssembly:
# For WebAssembly Projects
mkdir webassembly
cd webassembly
cmake .. -DXWIN_OS=WASM -DCMAKE_TOOLCHAIN_FILE= " $EMSDK /emscripten/1.38.1/cmake/Modules/Platform/Emscripten.cmake " -DCMAKE_BUILD_TYPE=Release
# Run emconfigure with the normal configure command as an argument.
$EMSDK /emscripten/emconfigure ./configure
# Run emmake with the normal make to generate linked LLVM bitcode.
$EMSDK /emscripten/emmake make
# Compile the linked bitcode generated by make (project.bc) to JavaScript.
# 'project.bc' should be replaced with the make output for your project (e.g. 'yourproject.so')
$EMSDK /emscripten/emcc project.bc -o project.jsPara obtener más información, visite los documentos Emscripten en CMake.
Para Android Studio deberá hacer un proyecto, luego editar su archivo build.gradle .
// ? To build your Android Studio project
android {
.. .
externalNativeBuild {
cmake {
.. .
// Use the following syntax when passing arguments to variables:
// arguments "-DVAR_NAME=ARGUMENT".
arguments " -DXWIN_OS=ANDROID " ,
// The following line passes 'rtti' and 'exceptions' to 'ANDROID_CPP_FEATURES'.
" -DANDROID_CPP_FEATURES=rtti exceptions "
}
}
buildTypes { .. . }
// Use this block to link Gradle to your CMake build script.
externalNativeBuild {
cmake { .. . }
}
}Para obtener más información, visite los documentos de Android Studio en Cmake.
Luego cree una función de delegado principal void xmain(int argc, const char** argv) en un archivo .cpp en su proyecto (por ejemplo " XMain.cpp ") donde colocará la lógica de su aplicación:
# include " CrossWindow/CrossWindow.h "
void xmain ( int argc, const char ** argv)
{
// ?️ Create Window Description
xwin::WindowDesc windowDesc;
windowDesc. name = " Test " ;
windowDesc. title = " My Title " ;
windowDesc. visible = true ;
windowDesc. width = 1280 ;
windowDesc. height = 720 ;
bool closed = false ;
// ? Initialize
xwin::Window window;
xwin::EventQueue eventQueue;
if (!window. create (windowDesc, eventQueue))
{ return ; }
// ? Engine loop
bool isRunning = true ;
while (isRunning)
{
// ♻️ Update the event queue
eventQueue. update ();
// ? Iterate through that queue:
while (!eventQueue. empty ())
{
const xwin::Event& event = eventQueue. front ();
if (event. type == xwin::EventType::MouseInput)
{
const xwin::MouseInputData mouse = event. data . mouseInput ;
}
if (event. type == xwin::EventType::Close)
{
window. close ();
isRunning = false ;
}
eventQueue. pop ();
}
}
} Esta función xmain se llamará desde una función principal específica de la plataforma que CMAKE se incluirá en su proyecto principal. Si alguna vez necesita acceder a algo desde la función principal específica de la plataforma por cualquier razón, lo encontrará en xwin::getXWinState() .
Asegúrese de tener CMAKE instalado.
| Opciones de cmake | Descripción |
|---|---|
XWIN_TESTS | Si las pruebas unitarias están habilitadas o no. El valor predeterminado se OFF , puede estar ON o OFF . |
XWIN_API | La API del sistema operativo se utilizará para la generación de ventanas, los valores predeterminados a AUTO , pueden ser NOOP , WIN32 , COCOA , UIKIT , XCB , ANDROID o WASM . |
XWIN_OS | Opcional : para qué sistema operativo construir funciona como una forma más rápida de establecer plataformas de destino. Los valores predeterminados a AUTO , pueden ser NOOP , WINDOWS , MACOS , LINUX , ANDROID , IOS , WASM . Si su plataforma admite múltiples API, la API final se establecerá automáticamente en los valores predeterminados CrossWindow ( WIN32 en Windows, XCB en Linux). Si XWIN_API está configurado, se ignora esta opción. |
Primero instale git, luego abra cualquier terminal en cualquier carpeta y escriba:
# ? Clone the repo
git clone https://github.com/alaingalvan/crosswindow.git --recurse-submodules
# ? go inside the folder
cd crosswindow
# ? If you forget to `recurse-submodules` you can always run:
git submodule update --init
A partir de ahí, tendremos que configurar nuestros archivos de compilación. Asegúrese de instalar lo siguiente:
CMake
Un IDE como Visual Studio, Xcode o un compilador como GCC.
Luego escriba lo siguiente en su terminal desde la carpeta Repo:
# ?️ To build your Visual Studio solution on Windows x64
cmake -B build -A x64 -DXWIN_TESTS=ON
# ? To build your XCode project on Mac OS
cmake -B build -G Xcode -DXWIN_TESTS=ON
# ? To build your .make file on Linux
cmake -B build -DXWIN_TESTS=ON
# ? Build on any platform:
cmake -B build --build Cada vez que agrega nuevos archivos al proyecto, ejecute cmake .. desde su solución/carpeta de proyecto /build/ , y si edita el archivo CMakeLists.txt , asegúrese de eliminar los archivos generados y ejecutar Cmake nuevamente.
CrossWindow tiene licencia como MIT o Apache-2.0 , lo que sea que prefiera.