Documentation | Démos | Autres bibliothèques
Cross Window est une bibliothèque d'abstraction du système multiplateforme pour gérer les fenêtres et effectuer des tâches de système d'exploitation. Il est conçu pour être facile à intégrer, intuitif et à prendre en charge tout ce dont vous pourriez avoir besoin pour vos applications.
? Fenêtre simple, boîte de dialogue de fichiers et création de boîte de dialogue de messages.
⌨️? ️? ? Entrée de base (clavier, souris, toucher et jeu de jeu).
? Caractéristiques spécifiques à la plate-forme (transparence Mac, accéléromètre mobile, etc.).
? Tests unitaires + couverture de test (Appveyor pour Windows , Circleci pour Android / MacOS / IOS , [Travis] [Travis-Url] pour Linux / NOOP ).
? ️ Windows - Win32
? Mac - Cocoa
iOS - UIKit
? Linux - XCB ou XLib
? Android (en cours)
WebAssembly - Emscripten
NOOP (sans tête)
Ajoutez d'abord le repo en sous-module dans votre dossier de dépendances tels que external/ :
# ⤵️ Add your dependency as a git submodule:
git submodule add https://github.com/alaingalvan/crosswindow.git external/crosswindow Ensuite, dans votre fichier CMakeLists.txt , incluez les éléments suivants:
# ⤵️ 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
) Remplissez le reste de votre fichier CMakeLists.txt avec tout autre fichier source et dépendances que vous pourriez avoir, puis dans votre projet 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 --buildPour WebAssembly, vous devrez installer EMScripten. En supposant que le SDK soit installé, procédez comme suit pour créer un projet 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.jsPour plus d'informations, visitez les documents EMScripten sur CMake.
Pour Android Studio, vous devrez réaliser un projet, puis modifiez votre fichier 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 { .. . }
}
}Pour plus d'informations, visitez les documents d'Android Studio sur CMake.
Créez ensuite une fonction principale de délégué void xmain(int argc, const char** argv) dans un fichier .cpp dans votre projet (par exemple " XMain.cpp ") où vous metterez votre logique d'application:
# 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 ();
}
}
} Cette fonction xmain sera appelée à partir d'une fonction principale spécifique à la plate-forme qui sera incluse dans votre projet principal par CMake. Si vous avez besoin d'accéder à quelque chose à partir de la fonction principale spécifique à la plate-forme pour une raison quelconque, vous le trouverez dans xwin::getXWinState() .
Assurez-vous d'installer Cmake.
| Options CMake | Description |
|---|---|
XWIN_TESTS | Si les tests unitaires sont activés ou non. Les défauts sont OFF , peuvent être ON ou OFF . |
XWIN_API | L'API OS à utiliser pour la génération de fenêtres, par AUTO , peut être peut être NOOP , WIN32 , COCOA , UIKIT , XCB , ANDROID ou WASM . |
XWIN_OS | Facultatif - Quel système d'exploitation pour construire, fonctionne comme un moyen plus rapide de définir les plates-formes cibles. Les défauts par AUTO peuvent être NOOP , WINDOWS , MACOS , LINUX , ANDROID , IOS , WASM . Si votre plate-forme prend en charge plusieurs API, l'API finale sera automatiquement définie sur les défauts de croisement ( WIN32 sur Windows, XCB sur Linux). Si XWIN_API est défini, cette option est ignorée. |
Installez d'abord Git, puis ouvrez n'importe quel terminal dans n'importe quel dossier et type:
# ? 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
De là, nous devrons configurer nos fichiers de construction. Assurez-vous d'installer le suivant:
Cmake
Un IDE tel que Visual Studio, Xcode ou un compilateur tel que GCC.
Tapez ensuite ce qui suit dans votre terminal dans le dossier 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 Chaque fois que vous ajoutez de nouveaux fichiers au projet, exécutez cmake .. à partir de votre dossier de solution / projet /build/ , et si vous modifiez le fichier CMakeLists.txt , assurez-vous de supprimer les fichiers générés et de relancer CMake.
Crosswindow est sous licence en tant que MIT ou Apache-2.0 , selon ce que vous préférez.