เอกสาร การสาธิต | ห้องสมุดอื่น ๆ
Cross Window เป็นไลบรารี Abstraction System Cross Platform สำหรับการจัดการ Windows และทำงาน OS มันถูกออกแบบมาเพื่อให้ง่ายต่อการรวมใช้งานง่ายและสนับสนุนทุกสิ่งที่คุณต้องการสำหรับแอพของคุณ
- หน้าต่างกล่องโต้ตอบไฟล์และการสร้างกล่องโต้ตอบข้อความ
? - อินพุตพื้นฐาน (แป้นพิมพ์, เมาส์, สัมผัสและ gamepad)
- คุณสมบัติเฉพาะของแพลตฟอร์ม (ความโปร่งใส MAC, เครื่องเร่งความเร็วมือถือ ฯลฯ )
- การทดสอบหน่วย + การทดสอบความครอบคลุม (Appveyor สำหรับ Windows , Circleci สำหรับ Android / MacOS / iOS , [Travis] [Travis-URL] สำหรับ Linux / Noop )
? ️ windows - Win32
- MAC - Cocoa
iOS - UIKit
- Linux - XCB หรือ XLib
- Android (อยู่ระหว่างดำเนินการ)
webAssembly - Emscripten
Noop (หัวหัว)
ก่อนอื่นเพิ่ม repo เป็น submodule ในโฟลเดอร์การพึ่งพาของคุณเช่น external/ :
# ⤵️ Add your dependency as a git submodule:
git submodule add https://github.com/alaingalvan/crosswindow.git external/crosswindow จากนั้นในไฟล์ CMakeLists.txt ของคุณให้รวมสิ่งต่อไปนี้:
# ⤵️ 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
) กรอกไฟล์ CMakeLists.txt ที่เหลือของคุณด้วยไฟล์ต้นฉบับและการอ้างอิงอื่น ๆ ที่คุณอาจมีจากนั้นในรูทโครงการของคุณ:
# ?️ 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 --buildสำหรับ WebAssembly คุณจะต้องติดตั้ง Emscripten สมมติว่าคุณติดตั้ง SDK ให้ทำสิ่งต่อไปนี้เพื่อสร้างโครงการ 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.jsสำหรับข้อมูลเพิ่มเติมโปรดเยี่ยมชมเอกสาร emscripten บน cmake
สำหรับ Android Studio คุณจะต้องทำโครงการจากนั้นแก้ไขไฟล์ 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 { .. . }
}
}สำหรับข้อมูลเพิ่มเติมเยี่ยมชมเอกสารของ Android Studio เกี่ยวกับ CMake
จากนั้นสร้างฟังก์ชั่นตัวแทนหลัก void xmain(int argc, const char** argv) ในไฟล์ .cpp ในโครงการของคุณ (ตัวอย่างเช่น " XMain.cpp ") ซึ่งคุณจะใส่ตรรกะแอปพลิเคชันของคุณ:
# 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 ();
}
}
} ฟังก์ชั่น xmain นี้จะถูกเรียกจาก ฟังก์ชั่นหลักเฉพาะแพลตฟอร์ม ที่จะรวมอยู่ในโครงการหลักของคุณโดย CMake หากคุณต้องการเข้าถึงบางสิ่งบางอย่างจากฟังก์ชั่นหลักเฉพาะของแพลตฟอร์มไม่ว่าด้วยเหตุผลใดก็ตามคุณจะพบได้ใน xwin::getXWinState()
ตรวจสอบให้แน่ใจว่าได้ติดตั้ง cmake
| ตัวเลือก cmake | คำอธิบาย |
|---|---|
XWIN_TESTS | ไม่ว่าจะเปิดใช้งานการทดสอบหน่วยหรือไม่ ค่าเริ่มต้นที่จะ OFF สามารถ ON หรือ OFF |
XWIN_API | OS API ที่จะใช้สำหรับการสร้างหน้าต่างค่าเริ่มต้นเป็น AUTO สามารถเป็น NOOP , WIN32 , COCOA , UIKIT , XCB , ANDROID หรือ WASM |
XWIN_OS | ตัวเลือก - ระบบปฏิบัติการใดที่จะสร้างฟังก์ชั่นเป็นวิธีที่เร็วกว่าในการตั้งค่าแพลตฟอร์มเป้าหมาย ค่าเริ่มต้นเป็น AUTO สามารถเป็น NOOP , WINDOWS , MACOS , LINUX , ANDROID , IOS , WASM หากแพลตฟอร์มของคุณรองรับ API หลายตัว API สุดท้ายจะถูกตั้งค่าเป็นค่าเริ่มต้น CrossWindow โดยอัตโนมัติ ( WIN32 บน Windows, XCB บน Linux) หากตั้งค่า XWIN_API ตัวเลือกนี้จะถูกละเว้น |
ก่อนอื่นติดตั้ง Git จากนั้นเปิดเทอร์มินัลใด ๆ ในโฟลเดอร์และพิมพ์:
# ? 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
จากนั้นเราจะต้องตั้งค่าไฟล์บิลด์ของเรา ตรวจสอบให้แน่ใจว่าได้ติดตั้งดังต่อไปนี้:
cmake
IDE เช่น Visual Studio, XCode หรือคอมไพเลอร์เช่น GCC
จากนั้นพิมพ์สิ่งต่อไปนี้ในเทอร์มินัลของคุณจากโฟลเดอร์ 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 เมื่อใดก็ตามที่คุณเพิ่มไฟล์ใหม่ลงในโครงการให้เรียกใช้ cmake .. จากโซลูชัน/โฟลเดอร์โครงการ /build/ และหากคุณแก้ไขไฟล์ CMakeLists.txt ให้แน่ใจว่าได้ลบไฟล์ที่สร้างขึ้นและเรียกใช้ cmake อีกครั้ง
Crosswindow ได้รับใบอนุญาตเป็น MIT หรือ Apache-2.0 ไม่ว่าคุณจะต้องการ