با اینکه Qt Creator محیط مناسبی برای برنامه نویسی Qt Qml و ++C بوجود آورده است. ولی تنها محیطی نیست که بتوان در آن برنامه های Qt Qml را توسعه داد. در واقع می توان با استفاده از خط فرمان (Command line) یا ترمینال (Terminal) و هر ویرایشگر متن (Text Editor) برای توسعه استفاده کرد.
توسعه در خط فرمان
برای توسعه برنامه های Qml/JavaScript در خط فرمان تنها نیاز به CMake و یک ویرایشگر ساده خواهیم داشت. می توانید از هر ویرایشگر متنی استفاده کنید ولی من پیشنهاد می کنم که از VS Code میکروسافت استفاده کنید که هم برجسته سازی (Highlight) و هم تکمیل سازی (Auto complete) کد Qml را پشتیبانی می کند. برنامه CMake، هم در لینوکس و هم در ویندوز قابل نصب است. با اینکه ویراش گرافیکی (GUI version) برنامه CMake موجود است ولی در این نوشته ما از آن در خط فرمان استفاده می کنیم.
همچنین باید کتابخانه های Qt Qml را از قبل نصب داشته باشیم. برای آشنایی با نصب کیوت (Qt) به نصب کیوت و نصب کیوت برای اندروید مراجعه کنید.
 
													ساختار پروژه
نخست ساختار کد منبع (Source code) پروژه را تعیین می کنیم. در مثال ما پروژه شامل یک فایل اصلی main.qml که صفحه اصلی برنامه است. چند فایل کیو ام ال (Qml) که صفحات یا انواع دیگر را تعریف می کنند. و فایل های جاوا اسکریپت (JavaScript) که منطق برنامه را پیاده می کنند. علاوه بر فایل های بالا به یک فایل CMakeList.txt برای ساخت پروژه نیاز داریم. یک فایل main.cpp برای بارگذاری Qml engine و یک فایل منابع qml.qrc نیز داریم.
├── images │ └── background.jpg ├── js │ └── methods.js ├── qmls │ ├── HomePage.qml │ └── InfoPage.qml ├── CMakeLists.txt ├── main.cpp ├── main.qml └── qml.qrc
بارگذاری Qml engine
موتور کیو ام ال (Qml engine) کار اجرای فایل های کیو ام ال برنامه را به عهده دارد. و ما آن را در فایل main.cpp در تابع main برنامه بارگذاری می کنیم. محتوای این فایل به صورت زیر است:
//main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char* argv[]) {
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}		در کد بالا engine فایل main.qml را در ابتدای برنامه اجرا می کند. دیگر فایل های کیو ام ال نیز از این فایل مسیر یابی و اجرا می شوند.
فایل منابع qml.qrc
برای اینکه موتور کیو ام ال به فایل های qml، js و دیگر منابع برنامه مانند تصاویر، فایل های ترجمه و … دسترسی داشته باشد. آن را در فایل های qrc تعریف می کنیم. در زمان کامپایل برنامه این فایل ها توسط برنامه rcc به فایل اجرایی برنامه افزوده می شوند.
نمونه فایل qrc برنامه شامل فایل های qml و js برنامه است. برای آشنایی بیشتر با ساختار این فایل به سیستم منابع کیوت (Qt Resource System) مراجعه کنید.
<RCC>
        <qresource prefix="/">
                <file>js/methods.js</file>
                <file>images/background.jpg</file>
                <file>qmls/HomePage.qml</file>
                <file>qmls/InfoPage.qml</file>
                <file>main.qml</file>
        </qresource>
</RCC>
		کامپایل برنامه با CMake
برنامه CMake برای کامپایل از فایل CMakeLists.txt استفاده می کند. در این فایل نام و نسخه برنامه، فایل های منبع و تنظیمات کامپایلر را می توانیم تعیین کنیم. نمونه فایل CMake پروژه مثال را در ادامه می بینید.
#CMakelists.txt
cmake_minimum_required(VERSION 3.16.0)
project(QmlAppProject VERSION 1.0.0)
set(CMAKE_AUTOMOC on)    #MOC: Meta-Object Compiler
set(CMAKE_AUTORCC on)    #RCC: Resource Compiler
find_package(Qt6 COMPONENTS Quick REQUIRED)
# include(CheckPIESupported)
# check_pie_supported()
add_executable(qmlApp
    main.cpp  qml.qrc
)
# set_property(TARGET qmlApp PROPERTY POSITION_INDEPENDENT_CODE FALSE)
target_link_libraries(qmlApp PRIVATE
    Qt6::Quick
)		با تکمیل فایل CMakeLists.txt می توانیم برنامه را کامپایل کنیم. برای کامپایل برنامه ابتدا مسیر کتابخانه های Qt/Qml، مسیر کد منبع (Source code) و ساخت (Build) برنامه را تعریف می کنیم. سپس آن را کامپایل می کنیم.
#>cmake -DCMAKE_PREFIX_PATH=/home/user/Qt/6.x.x/gcc_64 -S <sourcecode_dir> -B <build_dir> #>cmake --build <build_dir>
دستور بالا مسیر کتابخانه های کیوت، مسیر کد منبع و مسیر ساخت برنامه تعیین می شوند. توجه کنید که دستور بالا در محیط لینوکس است. در محیط ویندوز مسیر نصب کیوت متفاوت است.
اگر پس از کامپایل و اجرای برنامه، خطایی مبنی بر اینکه فایل کتابخانه (library) است و نه فایل اجرایی (executable) در فایل CMakeLists.txt بالا، دو خط قبل از add_executable و یک خط بعد از آن را فعال (uncomment) کنید.
در اینجا ما توسعه برنامه های Qt/Qml را در خط فرمان توضیح دادیم. ولی این روش برای توسعه برنامه های QWidgets نیز قابل استفاده است. تنها کافیست کتابخانه های مربوطه را در فایل CMake معرفی کنید.
