رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران
کامبیز اسدزاده

معرفی ابزار کیوبس (Qbs) و پیکربندی آن

پست های پیشنهاد شده

معرفی ابزار

کیوبس (Qbs) با آوای (“Cubes”) همانند qmake و cmake یک ابزار بسیار ساده و قدرتمند برای ساخت پروژه در پلتفرم‌های مختلف می‌باشد. این ابزار قابلیت استفاده در هر نوع پروژه ای را دارد به‌گونه‌ای که مهم نیست زبان‌برنامه نویسی٬ ابزار‌ها و حتی کتابخانه‌های مورد استفاده چه چیزی باشند. کیوبس یک ابزار همه کاره است که یک نمودار ساخت از پروژه‌های سطح بالا مانند (qmake و cmake) فراهم می‌کند که علاوه بر آن وظیفه اجرای دستورات نمودار ساخته شده در سطح پایین را مانند (make) فراهم می‌کند. در این کتاب ما به پیش معرفی آن می‌پردازیم چرا که قرار است در نسخه ۶ کیوت جایگزین نوع .pro از qmake باشد.

کیوبس برنامه‌ها را بر پایه‌ی اطلاعاتی می‌سازد که در قالب یک فایل QML فراهم می‌شوند. هر فایل پروژه مشخص می‌کند که پروژه می‌تواند شامل چندین محصول باشد و شما نوع پروژه می‌توانیدمشخص کنید که یکی از انواع : نرم افزار، کتابخانه و غیره باشد. مشخصات سیستم مورد نیاز جهت استفاده از ابزار QBS حداقل نسخه ۵.۶.۰ به بعد خواهد بود. این ابزار همراه با Qt ارائه می‌شود.

 

معرفی ساختار QBS در قالب QML

کیوبس برای فایل پروژه خود از پسوند (*.qbs) استفاده می‌کند تا بتواند محتوای موجود در یک پروژه را معرفی کند. به طور کلی یک پروژه شامل چندین محتوا از محصول (پروژه) می‌باشد که در ادامه به آن‌ها اشاره شده است. یک محصول هدفی از روند ساخت است٬ به طور معمول یک برنامه کاربردی٬ کتابخانه و یا شاید یک چیز دیگر می‌تواند هدف آن باشد. جهت بررسی و مدیریت Qbs وارد بخش Setting یا Perefrences شوید و زبانه Qbs را انتخاب کنید تا در این بخش به نسخه و پیکربندی مقادیر مربوط به Qbs دسترسی داشته باشید.

QBS-01.png

مباحثی که در این پست آموزشی پوشش داده خواهد شد:

  • نحوه‌ی استفاده
  • معرفی انواع پروژه‌ها
  • معرفی برخی از پر کاربرد‌ترین آیتم‌های موجود در کیوبس مانند:
    • پروژه Project
    • زیر پروژه SubProject
    • ویژگی‌ها (خواص‌ها) Properties
    • اپلیکیشن Application
    • اپلیکیشن سی‌پلاس‌پلاس CppApplication
    • کتابخانه (پویا) DynamicLibrary
    • کتابخانه (ایستا) StaticLibrary
    • محصول Product
    • پروفایل Profile
    • گروه‌‌بندی Group
    • وابستگی‌ها Depends
    • و ...
  • معرفی ماژول‌های پر کاربرد در کیوبس مانند:
    • ماژول cpp جهت پیکربندی و پشتیبانی از C++ و ویژگی‌های آن در کیوبس
    • پیکربندی ماژول‌های کیوت
    • پیکربندی ویژگی‌های پردازنده
    • پیکربندی اختصاصی اندروید
    • پیکربندی اختصاصی محصولات اپل
    • پیکربندی Xcode
    • پیکربندی ماژول‌های کیوت
    • پیکربندی Java
    • و ...
  • در صورت نیاز به مباحث دیگری نیز اشاره خواهد شد.

نحوه‌ی استفاده

جهت استفاده از کیوبس کافی است با سینتکس JavaScript یا QML آشنا باشید. جهت پیکربندی یک پروژه سی‌پلاس‌پلاس نمونه کُد آن به صورت زیر خواهد بود:

import qbs 1.0

Application {
    name: "helloworld"
    files: "main.cpp"
    Depends { name: "cpp" }
}

انواع پروژه‌ها در کیوبس به چهار دسته‌ی زیر تقسیم بندی می‌شوند:

  1. تولید اپلیکیشن ساده (Application)
    • این نوع پروژه به عنوان یک آیتم از محصول می‌باشد. 
       
      Application {
          Depends { name: "cpp" }
      }
  2. تولید اپلیکیشن تحت وابستکی و ویژگی‌های سی‌پلاس‌پلاس (CppApplication)
    • به عنوان یک محصول که تحت وابستگی‌های ماژول Cpp می‌باشد استفاده می‌شود.
       
      CppApplication {
      
       cpp.cxxLanguageVersion: "c++11"
              
       files: [
          "main.cpp",
          "qml.qrc",
         ]
      }
  3. تولید پروژه در قالب کتابخانه‌ی پویا (DynamicLibrary)
    • این نوع زمانی مورد استفاده قرار می‌گیرد که قرار است پروژه را در قالب یک خروجی کتابخانه‌ی پویا تولید کنیم.
       
      Product {
          type: "dynamiclibrary"
      }
  4. تولید پروژه در قالب کتابخانه‌ی استاتیک (StaticLibrary)
    • این نوع زمانی مورد استفاده قرار می‌گیرد که قرار است پروژه را در قالب یک خروجی کتابخانه‌ی ایستا تولید کنیم.
    • مثال
       
      Product {
          type: "staticlibrary"
      }

       

در یک پروژه برای مشخص کردن فایل‌های قابل استفاده، نام و وابستگی‌ها به سادگی می‌توانند مشخص شوند. برای مثال در صورتی که پروژه‌ی شما تحت فناوری کیوت و Qt Quick است کافی است مقدار Depends را مشخص کنید:

Depends { name: "Qt.core" }
Depends { name: "Qt.quick" }

لیستی از آیتم‌های (پر کاربرد و پایه) در QBS

  • آیتم پروژه (Project) به عنوان یک آیتم از پروژه مجموعه‌ای از محصولات و خواص‌های مربوط به آن‌ها را ارائه می‌دهد.
  • آیتم زیر پروژه‌ (Sub Project) یک ایتم زیر پروژه برای اضافه کردن یک پروژه به عنوان زیر مجموعه پروژه می‌باشد که در یک فایل جداگانه تعریف شده است.
        SubProject {
            filePath: "Subproject/OtherProject.qbs"
            Properties {
                name: "A sub-project"
            }
        }
  • آیتم خواص (Properties) شرایط دستوری و خاصیت‌های مورد نیاز را برای یک محصول ایجاد می‌کند.
     Product {
          Properties {
              condition: qbs.targetOS.contains("windows")
              ...
              .....
          }
      }
    - خواص condition از نوع بولین جهت شرط سازی سایر موارد در یک محصول را فراهم می‌کند.
    - خواص overrideListProperties لیست خواص تنظیم شده را که در ماژول‌ها به دست می آید را بر می‌گرداند.
     
  • آیتم اپلیکیشن Application به عنوان یک آیتم با نوع 'application' برای یک محصول تعریف می‌شود.
  • آیتم اپلیکیشن سی‌پلاس‌پلاس CppApplication به عنوان یک محصول با وابستگی‌های لازم در سی‌پلاس‌پلاس می‌باشد.
  • آیتم کتابخانه‌‌ی پویا (DynamicLibrary) به عنوان یک آیتم برای محصول از نوع کتابخانه در قالب داینامیک (پویا) می‌باشد.
    import qbs
    
    Project {
        minimumQbsVersion: "1.7.1"
        
        CppApplication {
    
            type: "dynamiclibrary"
            ...
            
            Group {    
                // Properties for the produced executable
                fileTagsFilter: "application"
                qbs.install: true
            }
        }
    
    }

     

  • آیتم کتابخانه‌‌ی ایستا (StaticLibrary) به عنوان یک آیتم برای محصول از نوع کتابخانه در قالب استاتیک (ایستا) می‌باشد.
    import qbs
    
    Project {
        minimumQbsVersion: "1.7.1"
        
        CppApplication {
    
            type: "staticlibrary"
            ...
            
            Group {    
                // Properties for the produced executable
                fileTagsFilter: "application"
                qbs.install: true
            }
        }
    
    }

     

  • آیتم محصول (Product) به عنوان یک محصول (Product) به طور معمول نتیجه یک فرآیند ساخت را ارائه می‌دهد. مجموعه ای از فایلهای ورودی و خروجی را مشخص می‌کند. برای مثال نمونه‌ی زیر محصول را به عنوان یک پروژه سی پلای پلاس تنظیم می‌کند.
    Product {
          name: "helloworld"
          type: "application"
          files: "main.cpp"
          Depends { name: "cpp" }
      }

    خواص عضو در محصول (Product)

 

  • aggregate : bool
  • buildDirectory : path
  • builtByDefault : bool
  • condition : bool
  • consoleApplication : bool
  • destinationDirectory : string
  • excludeFiles : stringList
  • files : stringList
  • multiplexByQbsProperties : stringList
  • multiplexedType : stringList
  • name : string
  • qbsSearchPaths : stringList
  • sourceDirectory : path
  • targetName : string
  • type : stringList
  • version : string 

 

  • عضو aggregate اگر مقدارش برابر با true باشد، محصولی را که تحت وابستگی چندگانه باد در قالب یک محصول جمع آوری شده تولید خواهد کرد. در صورتی که شما نمی‌خواهید چنین کاری کنید بهتر است آن را به صورت تعریف نشده در نظر بگیرید.
  • عضو buildDirectory دایرکتوری (ریشه مسیر) برای ساخت محصول است. فایل‌های تولید شده بعد از کامپایل در این مسیر قرار خواهند گرفت که به صورت پیش فرض توسط Qbs مقدار دهی می‌شود و کاربر نمی‌تواند آن را تغییر دهد.
  • عضو buildByDefault تعیین کننده ساخت محصول است. اگر مقدارش false باشد، عمل ساخت محصول تنها در زمان درخواست صریح صورت خواهد گرفت که دستور ساخت آن توسط پارامتر --products و یا استفاده از --all-products برای دستور ساخت استفاده خواهد شد. مقدار آن به صورت پیشفرض true می‌باشد.
  • عضو condition تعیین می‌کند که محصول ساخته خواهد شد، اگر مقدارش false باشد، محصول ساخته نخواهد شد. مقدار این عضو به صورت پیشفرض true است.
  • در ویندوز، تعیین می‌کند که برنامه تحت GUI تولید شود یا تحت کنسول. اگر مقدار آن برابر true باشد،  یک اپلیکیشن تحت کنسول تولید خواهد شد. در غیر این صورت یک اپلیکیشن تحت رابط کاربری (GUI) تولید خواهد شد. در پلتفرم‌های اپل، به نوع برنامه به صورت پیشفرض بستگی دارد. اگر مقدارش true باشد، یک برنامه اجرایی طبیعی تولید خواهد شد در غیر این صورت، بسته‌ی نرم‌ا‌فزاری تولید می‌شود.
  • عضو destinationDirectory مسیری است که در هدف مصنوعات قرار می‌گیرد. اگر یک مسیر نسبی داده شود آن را به عنوان دایرکتوری پایه برای project.buildDirectory تنظیم می‌کند.
  • عضو exclude-files لیست فایلهای منبع یا سورس را شاملش نمی‌شود. برای موارد معروف و خاص مفید است.
  • عضو files لیستی از فایل های منبع یا سورس را شامل می‌شود. 
  • عضو multiplexByQbsProperties مشخص می‌کند که کدام خواص ماژول qbs برای استفاده از محصولات چندگانه استفاده شود.
  • عضو multiplexedType نوع محصول را برای نمونه محصولات چند گانه مشخص می‌کند. در صورتی که نیاز به این خواص ندارید می‌توانید آن را تعریف نکنید.
  • عضو name نام محصول را اعمال میکند. مقدار آن باید بر اساس یک عبارت جاوا اسکریپتی باشد.
    
      CppApplication {
          name: "hello" + "world"
          // valid
      }
      CppApplication {
          name: "app_" + qbs.targetOS.join("_")
          // invalid
      }
    
  • عضو qbsSearchPath با مقدار project.qbsSearchPaths ادغام خواهد شد که لیستی از مسیرها را برای وارد کردن ماژول‌ها جستجو می‌کند.
  • عضو sourceDirectory دایرکتوری یا مسیر منبع را برای محصول مشخص می‌کند. این دایرکتوری برای فایل‌هایی که در محصول تعریف شده اند می‌باشد.
  • عضو targetName نام پایه فایل است که با هدف مصنوعات برای محصول می‌باشد. مقدار نام فایلی که نامعتبر باشد توسط کاراکتر زیر خط جایگزین می‌شود.
  • عضو type برچسب‌های فایل مربط به مصنوعات محصول را مشخص می‌کند.
  • عضو version شماره نسخه محصول را مشخص می‌کند. برای کتابخانه‌های به اشتراک گذاری شده و همچنین فایل Info.plist تحت محصولات اپل مورد استفاده می‌گیرد.
     
  • آیتم پروفایل (Profile) به عنوان پروفایل سفارشی می‌تواند برای تعریف اهداف و شرایط ساخت بر روی یک ماشین خاص تنظیم شود.
        Profile {
                  name: "my-special-profile"
                  qbs.toolchainType: "gcc"
                  qbs.targetPlatform: "linux"
                  qbs.architecture: "armv7a"
                  cpp.toolchainInstallPath: "/opt/special-gcc/bin"
                  cpp.toolchainPrefix: "arm-linux-gnueabi-"
              }
    
              qbs.profiles: ["my-special-profile"]
    

     

  • آیتم گروه (Group) جهت تعریف گروه‌های مختلف در فایل‌هایی که شامل یک محصول می‌باشند مورد استفاده قرار می‌گیرد. این ویژگی در محیط توسعه برای مدیریت پروژه‌های بزرگ بسیار کارآمد و مفید است.
     Application {
          Group {
              name: "common files"
              files: ["myclass.h", "myclass_common_impl.cpp"]
          }
          Group {
              name: "Windows files"
              condition: qbs.targetOS.contains("windows")
              files: "myclass_win_impl.cpp"
          }
          Group {
              name: "Unix files"
              condition: qbs.targetOS.contains("unix")
              files: "unixhelper.cpp"
              Group {
                  name: "Linux files"
                  condition: qbs.targetOS.contains("linux")
                  files: "myclass_linux_impl.cpp"
              }
              Group {
                  name: "FreeBSD files"
                  condition: qbs.targetOS.contains("freebsd")
                  files: "myclass_freebsd_impl.cpp"
              }
              Group {
                  name: "macOS files"
                  condition: qbs.targetOS.contains("macos")
                  files: "myclass_macos_impl.cpp"
              }
              Group {
                  name: "PS4 Pro files"
                  condition: qbs.targetOS.contains("linux")
                  files: "myclass_macos_impl.cpp"
              }
              Group {
                  name: "Xbox One X files"
                  condition: qbs.targetOS.contains("windows")
                  files: "myclass_macos_impl.cpp"
              }
          }
          Group {
              name: "Files to install"
              qbs.install: true
              qbs.installDir: "share"
              files: "runtime_resource.txt"
          }
      }
    
  • آیتم وابستگی (Depends) یک آیتم وابستگی در یک محصول یا ماژول تعریف می‌شود. به عنوان مثال محصول زیر ماژول Qt Quick، Qt Core و Qt Gui را بارگیری می‌کند.
        Product {
            
            Depends { name: "Qt.core" }
            Depends { name: "Qt.quick" }
            Depends { name: "Qt.gui" }
        }

    و یا به روش زیر تحت کتابخانه‌ی Qt ماژول‌های مربوطه را بارگیری می‌کند.
     

        Product {
            Depends { name: "Qt"; submodules: ["core", "quick", "gui"] }        
        }

    ترکیبی از ماژول‌های مختلف از پروژه‌های مختلف به صورت زیر خواهد بود:
     

        Product {
            Depends { name: "cpp" }        
            Depends { name: "MyEngine"; submodules: ["module1", "module2", "module3"] }                
            Depends { name: "Qt"; submodules: ["core", "quick", "gui"] }        
        }

     

معرفی ماژول‌های پر کاربرد در Qbs

  • ماژول cpp جهت پیکربندی و پشتیبانی از C++ و ویژگی‌های آن در کیوبس
    • برخی از ویژگی‌های موجود در این ماژول به صورت زیر آورده شده‌اند:

 

  • allowUnresolvedSymbols : bool
  • alwaysUseLipo : bool
  • architecture : string
  • archiverName : string
  • archiverPath : string
  • assemblerFlags : stringList
  • assemblerName : string
  • assemblerPath : string
  • automaticReferenceCounting : bool
  • cFlags : stringList
  • cLanguageVersion : stringList
  • combineCSources : bool
  • combineCxxSources : bool
  • combineObjcSources : bool
  • combineObjcxxSources : bool
  • commonCompilerFlags : stringList
  • compilerDefinesByLanguage : var
  • compilerFrameworkPaths : pathList
  • compilerIncludePaths : pathList
  • compilerLibraryPaths : pathList
  • compilerName : string
  • compilerPath : string
  • compilerPathByLanguage : var
  • compilerVersionMajor : int
  • compilerVersionMinor : int
  • compilerVersionPatch : int
  • compilerWrapper : stringList
  • cppFlags : stringList
  • cxxFlags : stringList
  • cxxLanguageVersion : stringList
  • cxxStandardLibrary : string
  • debugInformation : bool
  • defines : stringList
  • discardUnusedData : bool
  • distributionFrameworkPaths : pathList
  • distributionIncludePaths : pathList
  • distributionLibraryPaths : pathList
  • driverFlags : stringList
  • driverLinkerFlags : stringList
  • dsymutilFlags : stringList
  • dsymutilPath : string
  • dynamicLibraries : stringList
  • enableCompilerDefinesByLanguage : stringList
  • enableExceptions : bool
  • enableReproducibleBuilds : bool
  • enableRtti : bool
  • endianness : string
  • entryPoint : string
  • exceptionHandlingModel : string
  • exportedSymbolsCheckMode : string
  • frameworkPaths : pathList
  • frameworks : stringList
  • generateManifestFile : bool
  • includePaths : pathList
  • libraryPaths : pathList
  • linkerFlags : stringList
  • linkerMode : string
  • linkerName : string
  • linkerPath : string
  • linkerWrapper : stringList
  • lipoPath : string
  • minimumIosVersion : string
  • minimumMacosVersion : string
  • minimumTvosVersion : string
  • minimumWatchosVersion : string
  • minimumWindowsVersion : string
  • nmName : string
  • nmPath : string
  • objcFlags : stringList
  • objcopyName : string
  • objcopyPath : string
  • objcxxFlags : stringList
  • optimization : string
  • platformDefines : stringList
  • positionIndependentCode : bool
  • prefixHeaders : pathList
  • requireAppContainer : bool
  • requireAppExtensionSafeApi : bool
  • rpathOrigin : string
  • rpaths : stringList
  • runtimeLibrary : string
  • separateDebugInformation : bool
  • soVersion : string
  • sonamePrefix : string
  • staticLibraries : stringList
  • stripName : string
  • stripPath : string
  • systemFrameworkPaths : pathList
  • systemIncludePaths : pathList
  • systemRunPaths : stringList
  • treatSystemHeadersAsDependencies : bool
  • treatWarningsAsErrors : bool
  • useCPrecompiledHeader : bool
  • useCxxPrecompiledHeader : bool
  • useLanguageVersionFallback : bool
  • useObjcPrecompiledHeader : bool
  • useObjcxxPrecompiledHeader : bool
  • useRPathLink : bool
  • useRPaths : bool
  • variantSuffix : string
  • visibility : string
  • warningLevel : string
  • weakFrameworks : stringList
  • windowsApiAdditionalPartitions : stringList
  • windowsApiCharacterSet : string
  • windowsApiFamily : string 
  • با توجه به لیست بالا، به برخی از ویژگی‌های موجود در این لیست اشاره می‌کنیم.
  • ویژگی cxxLanguageVersion و cLanguageVersion جهت تعیین کردن پشتیبانی از نسخه‌ی زبان‌های سی‌پلاس‌پلاس و سی مورد استفاده قرار می‌گیرد که مشخصه‌های آن به ترتیب برای سی‌پلاس‌پلاس c++98 | c++11 | c++14 | c++17 و برای سی c89 | c98 | c11 می‌باشند. 
    cpp.cLanguageVersion: "c11"
    cpp.cxxLanguageVersion: "c++17"

     

نقل قول

این آموزش ادامه دارد...

  •  
  • پسندیدن 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
مهمان
این موضوع برای عدم ارسال قفل گردیده است.

  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

  • مطالب مشابه

    • توسط کامبیز اسدزاده
      همانطور که می‌دانید محیط توسعه‌ی یکپارچه‌ی نرم‌افزار Visual Studio به عنوان یکی از جامع‌ترین محیط‌های توسعه بسیار شناخته شده است. برنامه‌نویسان سی‌پلاس‌پلاس بسیاری از پروژه‌های خود را تحت این محیط علاوه بر آن کیوت کریتور توسعه می‌دهند. کتابخانه‌ی کیوت افزونه‌ای را برای یکپارچه سازی خود با محیط ویژوال استودیو ارائه داده است که در حالت عادی از کتابخانه‌ی Qt به خوبی پشتیبانی می‌کند و اجازه می‌دهد تا شما کُد‌های خود را که بر اساس کتابخانه‌ی کیوت هستند در محیط ویژوال استودیو توسعه و خروجی بگیرید.
      اما محدودیت‌هایی در این افزونه تا به امروز وجود دارد، یکی از آن‌ها عدم هماهنگی و پشتیبانی از زبان QML بر پایه جاوا اسکریپت است. در نسخه‌ی بعدی کیوت یعنی 5.12.0 افزونه‌ی Qt Visual Studio Tools, v2.3.0 نیز منتشر خواهد شد که با نسخه‌های جدید ویژوال استودیو هماهنگ و به شما امکان اینم را خواهد داد تا بتوانید کد‌های نوشته شده توسط QML و JavaScript را اشکال‌زدایی کنید.
      این امکان وجود خواهد داشت تا شما هر جایی که نقطه‌ی توقف برای اشکال زدایی ایجاد کرده اید را مورد تجزیه تحلیل قرار خواهید داد. از جمله، تغییر تحولات در ارزش‌های متغیر‌ها و دیگر موارد.

      نسخه‌ی جدید این افزونه به طور کامل با زیرساخت اشکال زدایی QML یکپارچه سازی شده است. که به عنوان بخشی از ماژول Qt QML خدماتی برای اشکال زدایی، بررسی و ثبت و ظبط برنامه را از طریق یک پور TCP فراهم می‌کند.




      به صورت پیش‌فرض ویژگی اشکال زدایی در QML برای ویژوال استودیو فعال است. شما می‌توانید آن را در بخش تنظیمات افزونه ویژوال استودیو برای Qt غیرفعال کنید.

      این ابزار را به زودی در بخش دریافت فایل‌ها می‌توانید همزمان با نسخه‌ی ۵.۱۲.۰ کیوت دریافت نمایید.
    • توسط سید معین حسینی
      درود خدمت اساتید بزرگوار،
      من آخرین نسخه کیوت (5.11.2) رو دانلود و نصب کردم ولی یک برنامه خیلی ساده در کنسول ارور دیپندنسی داره!
      :-1: error: Circular all <- first dependency dropped. جستجوهای بنده هم اکثرا ختم می‌شه به ویرایش فایل make. انتظار می‌ره بعد از ساخت یک پروژه ساده کاملا بدون مشکل اجرا بشه!
      چیزی نیاز به کانفیگ داره؟ محیط لینوکس هستم!
    • توسط amirb
      با سلام و عرض ادب.
      چطور میشه توی Qt Quick و برای پلتفرم اندروید یک slot یا چیزی شبیه این تعریف کرد که مثلا وقتی دکمه back این پلتفرم زده شد فلان اتفاق رخ بده.
      با تشکر
    • توسط کامبیز اسدزاده
      کیوت (به انگلیسی: Qt) مجموعه‌ای از کتابخانه‌ها و سرآیندهای نوشته‌شده به زبان سی++ است که به برنامه‌نویس امکان توسعه آسان نرم‌افزارهای کاربردی را می‌دهد. کیوت شامل چندین کلاس برای کار با واسط گرافیکی، چندرسانه، ابزارهای پایگاه‌داده، شبکه و … است. نرم‌افزارهای نوشته شده با ابزار کیوت قادرند تا با استفاده از یک کامپایلر زبان سی‌پلاس‌پلاس برای طیف وسیعی از سیستم‌عامل‌ها از جمله گنو/لینوکس (نسخه‌های رومیزی و وسیله‌های قابل حمل)، ویندوز، ویندوز CE، مک‌اواس و … همگردانی شوند. بدین ترتیب حمل نرم‌افزار نوشته شده بدون تغییر در متن کد نوشته شده امکان‌پذیر است. از کیوت در زبان‌های برنامه‌نویسی متعددی مانند سی++ و جاوا و پایتون می‌توان استفاده‌کرد.
       
      جهت مشاهده‌ی مباحث مرتبط با این کتابخانه به این بخش مراجعه کنید.
×