# Repozitorija apraksts Direktorijā `src` atrodas pirmkods, kas ir sadalīts 3 moduļos `transpiler`, `qtapp` un `test`. Transpilātora modulis veic transpilēšanu, kuru kā API izmanto lietotnes modulis `qtapp`, kas izmanto `qt` un `QScintilla` bibliotēku. Modulis `test` satur automatizētos testus; izmanto `GTest` bibliotēku. # Nepieciešamie rīki un bibliotēkas ## Linux - `C++` kompilators (piemēram, `g++`) - Bibliotēka `Qt` (v5.15.0) - Bibliotēka `QScintilla` (v2.14) - Bibliotēka `GTest` (v1.15) - Rīks `CMake` - Rīks `Ninja` ## Windows - `C++` kompilators ([`MinGw`](https://winlibs.com/)) - Bibliotēka `Qt` (v5.15.0) - Bibliotēka `QScintilla` (v2.14) - Bibliotēka `GTest` (v1.15) - Rīks `CMake` - Rīks `Ninja` # Uzbūvēšana Linux un Windows sistēmām ir norādītas noklusētās bibliotēku atrašanās vietas. Lai uzbūvētu ar noklusētiem iestatījumiem. ```bash mkdir Debug/ cd Debug/ cmake -DCMAKE_BUILD_TYPE=Debug -G Ninja .. ``` Lai nekompilētu testus pievieno `-DCOMPILE_TESTS=OFF`. Ir pieejamas 2 cmake konfigurācijas - `Debug` (atkļūdošana) un `Release` (piegāde). Ja nepieciešams pielāgot vienu vai vairākus parametrus, skatīt nākamās 2 sadaļas. ## Linux ```bash cmake -DCMAKE_BUILD_TYPE=Debug \ -DQt5_DIR="/usr/lib/cmake/Qt5" \ -DQSCINTILLA_LIB_PATH="/usr/lib/libqscintilla2_qt5.so" \ -DQSCINTILLA_INCLUDE_PATH="/usr/include/qt/Qsci" \ -DGTEST_INCLUDE_DIR="/usr/include/gtest" \ -DGTEST_LIBRARY="/usr/lib/libgtest.so" \ -DGTEST_MAIN_LIBRARY="/usr/lib/libgtest_main.so" \ -G Ninja .. ``` ## Windows ```bash cmake -DCMAKE_BUILD_TYPE=Debug \ -DQt5_DIR="C:/Qt/5.15.0/mingw81_64/lib/cmake/Qt5" \ -DQSCINTILLA_LIB_PATH="C:/Programs/binaries/qscintilla2_qt5.dll" \ -DQSCINTILLA_INCLUDE_PATH="C:/Programs/QScintilla_src-2.14.1/src" \ -DGTEST_INCLUDE_DIR="C:/Programs/binaries/gtest_include" \ -DGTEST_LIBRARY="C:/Programs/binaries/gtest_lib/libgtest.a" \ -DGTEST_MAIN_LIBRARY="C:/Programs/binaries/gtest_lib/libgtest_main.a" \ -G Ninja .. ``` # Piegāde Nokompilējot projektu pamata izpildes fails ir direktorijā `./src/qtapp/MdemoryApp`. Papildus izpildes failam ir jānokomplektē bibliotēkas. ## Linux Lai ieliktu direktorijā nepieciešamās bibliotēkas (to jādara no Linux sistēmas). Ir pieejams skripts, kas sagatavo direktoriju ar visām bibliotēkām. ``` python linuxdeploy.py Release/src/qtapp/MdemoryApp ``` Katrā Linux distributīvā būtu jānotestē piegāde saderībai ar citām bibliotēkām, kas nav komplektējamas. ## Windows (11) Lai ieliktu direktorijā nepieciešamās bibliotēkas (to jādara no Windows sistēmas). ``` cd ./src/qtapp/ windeployqt MdemoryApp.exe ``` Darbam uz Windows direktorijā papildus jāieliek `qscintilla2_qt5.dll` un `Qt5PrintSupport.dll`. Piegādes kompilēšanā var pielikt `-DWIN32_EXECUTABLE=ON`, lai slēdzot programmu nerādītos termināla logs. # Testu izpilde Ja testi tiek kompilēti, tie tiek uzbūvēti "tests" direktorijā. Tos jāpalaiž terminālī. Nefunkcionālos testus ir lietderīgi palaist `Release` konfigurācijā, jo tās veiktspēja ir ievērojami augstāka un precīzāk atbilst gala lietotāja iegūtai veiktspējai. ``` ./src/test/transpilerFunctional ./src/test/transpilerNonFunctional ../src/test/testFiles/ ```