ئاۋال ئالدىنقى يازمامنى كۆرۈڭ https://elgek.subat.cn/d/132-birlikte-Hermes-niesli-kodidin-Compile-qilayli
Hermes بولسا يۇقىرى ئۈنۈملۈك JavaScript ماتورى، Qt6 بولسا كۆۈنمە يۈزلۈك ئۈستەليۈزى پروگراممىلىرىنى ئېچىش رامكىسى،ئەگەر ئىككىسىنى بىرلەشتۈرۈپ باقساقچۇ؟
توغرا، JavaScript بىلەن Qt دا ئۈستەليۈزى يۇمشاق دېتاللىرىنى يېزىشقا بولىدۇ، ئىگىلەيدىغان ئىچكى ساقلىغۇچ تىخىمۇ تۆۋەن، Electron, Webkit, Cef لارغا قارىغاندا روشەن ھالدا ئەۋزەللىكى بار، يەنە مەشغۇلات سىستېمىسى بىلەن يوچۇقسىز بىرىكىشنى قوللايدۇ،
ئۇنداقتا ئالدىنقى يازمىمىزدا بىز Hermes نىڭ ئەسلى كودىدىن SharedLibrary غا Compile قىلىپ بولدۇق،
بۇ قىتىم بىز ئۇنى C++ project ئىچىگە ئەكىرىپ Qt بىلەن تۇتاشتۇرىمىز،
cmake_minimum_required(VERSION 3.20) #ئەڭ تۆەن CMake تەلىۋى
project(AsyncFileSystemIO) #Project ئىسمى
set( #ئەسلى كودلىرىمىزنىڭ ئادېرسىنى ئۆزگەرگۈچى مىقدارغا ئېلىۋېلىش
MY_SOURCE_FILES
./src/main.cpp
# ./src/main_window.cpp
)
#region of Qt specific
set(CMAKE_PREFIX_PATH "/opt/Qt/6.4.0/gcc_64/") #Qt قاچىلىغان مۇندەرىجىڭىز
set(CMAKE_AUTOMOC ON) #Qt metadata compiler ئىقتىدارىنى ئىشلىتىش
set(CMAKE_AUTOUIC ON) #Qt UI compiler ئىقتىدارىنى ئىشلىتىش، يەنى كىڭەيتىلگەن نامى .ui بولغان ھۆججەتنى compile قىلىش.
set(CMAKE_AUTORCC ON) #Qt resource compiler نى ئىشلىتىش
find_package(Qt6 REQUIRED COMPONENTS Widgets REQUIRED Quick REQUIRED) #Qt نى ئىزدەش ھەمدە مۇناسىۋەتلىك Component لارنى تەلەپ قىلىش
#endregion of qt specific
add_executable(HelloQt "${MY_SOURCE_FILES}") #ئىجرا ھۆججىتى قۇرۇش
target_link_libraries(HelloQt PRIVATE Qt::Widgets Qt::Quick) #ئىجرا ھۆججىتىگە Qt نىڭ مۇناسىۋەتلىك Shared library لىرىنى قوشۇش
###Hermes specific.
target_include_directories(HelloQt PUBLIC "/opt/hermes-engine/include") #Header file path of hermes
target_link_libraries(HelloQt PUBLIC "/opt/hermes-engine/lib/libhermes.so") #Shared library path of hermes

ئەمدى ئازراق كود يېزىپ Hermes نى چاپتۇرۇپ باقايلى:
سۈرئىتىنىڭ تىزلىكىگە، گەپ كەتمەيدۇ ھى...
ئەمەلىيەتتە ئىگە تەرەپنىڭ ھىچقانداق ئالاھىدە مىساللىرىمۇ يوق ئىكەن، قوللانمىسىمۇ يوق ئىكەن،
مەن قانداق قىلىشنى ھىس تۇيغۇمغا ئەسلى كودلارنى، Header ھۆججەتلەرنى كۆرۈش، ئانالىز قىلىش ئارقىلىق كودنى يېزىش ئۇسۇلىنى تېپىپ چىقتىم،
ھىچقانداق بىر Documentation, example نىڭ ياردىمىسىزلا دەڭە!
يۇقارقى مىسالدا بىز JavaScript ئىچىدە C++ نى چاقىرالىدۇق، ئەمدى ئىچكىرلىگەن ھالدا Qt نى قوشۇپ باقايلىمۇ؟
بىز app.js ئىسىملىك ھۆججەتتىن بىرنى قۇرۇپ شۇنىڭ ئىچىگە كود يازايلى، ئاندىن ئۇنى Hermes قا يۈكلەيلى،
ئاندىن Qt نى چاقىرايلى، مەسىلەن دەسلەپكى قەدەم بىر تال كۆزنەك قۇرۇش، كۆزنەكنىڭ ماۋزۇسى، چوڭلۇقى، مەزمۇنى تەڭشىگىلى بولىدىغان قىلىش،
ئىچكى ساقلىغۇچ ئىگىلىشى ئاران 4.3 Megabyte
مەن ئەمدى app.js نىڭ مەزمۇنىنى ئۆزگەرتسەملا بولدى،
كىيىنكى مەنزىل بەلكىم QObject نى ئۇلاپ بېقىشقا ئۇرىنىپ بېقىش بولىشى مۇمكىن، ۋە ياكى Flutter نىڭ ئىچىگە Hermes نى سۆرەپ كىرەلىشىم مۇمكىن، ئويلاپ بېقىڭ، بۇنداق بولغاندا بىز JavaScript/TypeScript بىلەنمۇ Flutter يازالايمىز، ۋە ياكى قولىمىزدا بار بولغان React native پروگراممىلىرىغا flutter نى Renderer backend قىلالايمىز،
ۋە ياكى Qt نى React دا يېزىپ باقساقمۇ بولىدۇ.
ئەسلى كودى: https://dev.subat.cn/Ug-Projekt/hermes_with_qt.git
تامام.