Documentação | Demos | Outras bibliotecas
A janela cruzada é uma biblioteca de abstração do sistema de plataforma cruzada para gerenciar o Windows e executar tarefas do sistema operacional. Ele foi projetado para ser fácil de integrar, intuitivo e apoiar tudo o que você precisa para seus aplicativos.
? Janela simples, diálogo de arquivo e criação de diálogo de mensagens.
⌨️? ️? ? Entrada básica (teclado, mouse, toque e gamepad).
? Recursos específicos da plataforma (transparência MAC, acelerômetro móvel, etc.).
? Testes de unidade + cobertura de teste (AppVeyor para Windows , CircLeci para Android / MacOS / iOS , [travis] [travis-url] para Linux / Noop ).
? Aste Windows - Win32
? Mac - Cocoa
iOS - UIKit
? Linux - XCB ou XLib
? Android (em andamento)
WebAssembly - Emscripten
Noop (sem cabeça)
Primeiro, adicione o repositório como um submódulo na pasta de dependências, como external/ :
# ⤵️ Add your dependency as a git submodule:
git submodule add https://github.com/alaingalvan/crosswindow.git external/crosswindow Então, no seu arquivo CMakeLists.txt , inclua o seguinte:
# ⤵️ 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
) Preencha o restante do seu arquivo CMakeLists.txt com outros arquivos de origem e dependências que você possa ter, então na sua raiz do projeto:
# ?️ 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 o WebAssembly, você precisará instalar o Emscript. Supondo que você tenha o SDK instalado, faça o seguinte para construir um projeto 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 mais informações, visite os documentos EMSCRIPTEN no cmake.
Para o Android Studio, você precisará fazer um projeto e edite seu arquivo 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 mais informações, visite os documentos do Android Studio no CMake.
Em seguida, crie uma função de delegado principal void xmain(int argc, const char** argv) em um arquivo .cpp em seu projeto (por exemplo " XMain.cpp "), onde você colocará sua lógica de aplicativo:
# 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 ();
}
}
} Essa função xmain será chamada de uma função principal específica da plataforma que será incluída em seu projeto principal pela CMake. Se você precisar acessar algo da função principal específica da plataforma por qualquer motivo, você a encontrará em xwin::getXWinState() .
Certifique -se de instalar o CMake.
| Opções de cmake | Descrição |
|---|---|
XWIN_TESTS | Se os testes de unidade estão ou não ativados. Os padrões para OFF podem estar ON ou OFF . |
XWIN_API | A API do sistema operacional a ser usada para geração de janelas, os padrões para AUTO , pode ser NOOP , WIN32 , COCOA , UIKIT , XCB , ANDROID ou WASM . |
XWIN_OS | Opcional - para qual sistema operacional construir, funções como uma maneira mais rápida de definir plataformas de destino. Os padrões para AUTO , podem ser NOOP , WINDOWS , MACOS , LINUX , ANDROID , IOS , WASM . Se sua plataforma suportar várias APIs, a API final será automaticamente definida como Padrões CrossWindow ( WIN32 no Windows, XCB no Linux). Se XWIN_API estiver definido, esta opção for ignorada. |
Primeiro instale o git e depois abra qualquer terminal em qualquer pasta e digite:
# ? 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 daí, precisaremos configurar nossos arquivos de construção. Certifique -se de ter o seguinte instalado:
Cmake
Um IDE como Visual Studio, Xcode ou um compilador como o GCC.
Em seguida, digite o seguinte no seu terminal na pasta 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 Sempre que você adicionar novos arquivos ao projeto, execute cmake .. a partir da sua pasta Solution/Project /build/ , e se você editar o arquivo CMakeLists.txt , exclua os arquivos gerados e execute o CMake novamente.
O CrossWindow é licenciado como MIT ou Apache-2.0 , o que você preferir.