میتوانید از محیط CLI ای که ایجاد کرده اید لذت ببرید و احتمال زیاد دوستان و خانواده شما فکر میکنند که شما یک هکر شده اید.
## ویندوز
### کامپایل برای سایر سیستم عامل ها در لینوکس
مراجعه کنید به [`windows/cross-compile`](windows/cross-compile)
### کامپایل در ویندوز
#### Qt
در ابتدا فایل نصب Qt را از [qt.io](https://www.qt.io/download-open-source/) دانلود کنید. در طول نصب میباید toolchian مربوط به Qt را اسمبل کنید. میتوانید آخرین نسخه Qt را با استفاده از MinGW کامپایل کنید. هرچند که خود فایل نصب یک کامپایلر MinGW ارایه میکند، اما توصیه میشود که آن را به شکل جداگانه نصب کرد، چرا که Qt فاقد MSYS است که برای کامپایل و نصب OpenAL مورد نیاز است. به همین جهت میتوانید در صورت نیاز سربرگ `Tools` را غیر فعال کنید. گام های بعدی این چنین فرض میکنند که Qt در `C:\Qt` نصب شده است. اگر Qt را در مسیر دیگری نصب میکنید، دستورات زیر را به شکل مناسب تغیر دهید.
#### MinGW
فایل نصب MinGW را برای ویندوز از [sourceforge.net](http://sourceforge.net/projects/mingw/files/Installer/) دانلود و نصب کنید. مطمئن شوید که MSYS را انتخاب و نصب میکنید. MSYS مجموعه ای از ابزار های Unix برای ویندوز است. گام های بعدی در نظر میگیرند که MinGW در `C:\MinGW` نصب شده است. اگر مسیر نصب متفاوت است دستورات زیر را به شکل مناسب تغییر دهید. در برنامه نصب MinGW (mingw-get.exe) بسته های `mingw-developer-toolkit`, `mingw32-base`, `mingw32-gcc-g++`, `msys-base` و `mingw32-pthreads-w32` را انتخاب کنید. دقت داشته باشید که نسخه MinGW با ورژن و نسخه Qt سازگاری داشته باشد.
#### Wget
فایل نصب Wget برای ویندوز را از http://gnuwin32.sourceforge.net/packages/wget.htm دانلود و نصب کنید. این فایل ها را نصب کنید. گام های بعدی چنین فرض میکنند که Wget در مسیر
`C:\Program Files (x86)\GnuWin32\`
نصب شده است. اگر تصمیم دارید این فایل را در مسیر دیگری نصب کنید، دستورات زیر را به شکل مناسب تغییر دهید.
#### UnZip
فایل نصب UnZip برای ویندوز را از http://gnuwin32.sourceforge.net/packages/unzip.htm دانلود و آن را نصب کنید. گام هایی که در ادامه میآیند چنین فرض میکنند که UnZip در
`C:\Program Files (x86)\GnuWin32\`
نصب شده است. در صورتی که مسیر دیگری را انتخاب کرده اید دستورات را به شکل مناسب ویرایش نمایید.
#### تغییر PATH سیستم
فایل های اجرایی
MinGW/MSYS/CMake
را به متغیر PATH سیستم اضافه کنید که بتوان به شکل سراسری به آنها دسترسی داشت. به مسیر زیر بروید:
`Control Panel` -> `System and Security` -> `System` -> `Advanced system settings` -> `Environment Variables...`
یا دستور `sysdm.cpl` را اجرا کنید، سر برگ `Advanced system settings` را انتخاب کنید و روی دکمه `Environment Variables` کلیک کنید. در جعبه دوم (پایینی) به دنبال متغیر `PATH` بگردید و روی دکمه `Edit...` کلیک کنید. جعبه ورودی `Variable value:` به احتمال زیاد دارای چندین پوشه از قبل میباشد. هر پوشه با استفاده از نقطه ویرگول (;) جدا شده است. این جعبه ورودی را طوری تغییر دهید که پوشه های زیر را نیز شامل شود:
`;C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Program Files (x86)\CMake 2.8\bin;C:\Program Files (x86)\GnuWin32\bin`
. به احتمال زیاد پوشه CMake به شکل خودکار به مسیر اضافه شده است. توجه داشته باشید که مسیر هایی که دارای برنامه های `sh` و `bash` هستند، مانند مسیر
`C:\Program Files\OpenSSH\bin`
در آخر مسیر متغیر `PATH` قرار داشته باشند، در غیر اینصورت کامپایل انجام نخواهد شد.
#### کپی کردن منبع
کد منبع (https://github.com/qTox/qTox.git) را با استفاده از برنامه Git مورد نظر خود کپی کنید. برنامه های [SmartGit](http://www.syntevo.com/smartgit/) و [TorteiseGit](https://tortoisegit.org) هردو برای انجام این کار برنامه های خوبی هستند (توجه داشته باشید که شاید لازم باشد `git.exe` را به `PATH` اضافه کنید). گام های بعدی چنین فرض میکنند که کد ها را در مسیر `C:\qTox` کپی کرده اید. اگر تصمیم گرفته اید که مسیر دیگری را انتخاب کنید، دستورات را اصلاح نمایید.
#### دریافت پیش نیاز ها
اسکریپت `bootstrap.bat` که در مسیر `C:\qTox` قرار دارد را اجرا کنید. این اسکریپت به شکل خودکار پیش نیاز های لازم را دانلود خواهد کرد، آنها را کامپایل و در مسیر های لازم کپی خواهد نمود.
توجه داشته باشید که برخی از ابزار های ویروسیابی برخی از کتابخانه ها را به اشتباه ویروس شناسایی میکنند. اگر با این مشکل مواجه میشوید، به منظور کسب اطلاعات بیشتر به صفحه [problematic antiviruses](https://github.com/qTox/qTox/wiki/Problematic-antiviruses) مراجعه کنید.
## سویچ های زمان کامپایل
این سویچ ها به عنوان مولفه به دستور `cmake` اضافه میشوند. به عنوان مثال یک سویچ `SWITCH` که مقدار `YES` به آن اختصاص داده میشود، این مقدار به `cmake` منتقل میشود. و این اتفاق به شکل زیر انجام میشود:
```bash
cmake -DSWITCH=yes
```
سویچها:
- `SMILEYS`, مقادیر معنی دار:
- اگر تعریف نشود یا میزان معنی داری به آن اختصاص پیدا نکند، همه شکلک ها اضافه خواهند شد
- `DISABLED` – هیچ بسته شکلکی را اضافه نکن، تنها بسته های کاربر اضافه میشوند
- `MIN` – تنها یک بسته شکلک ها اضافه شود
[Atk]: https://wiki.gnome.org/Accessibility
[Cairo]: https://www.cairographics.org/
[Check]: https://libcheck.github.io/check/
[CMake]: https://cmake.org/
[DBus Menu]: https://launchpad.net/libdbusmenu
[FFmpeg]: https://www.ffmpeg.org/
[GCC]: https://gcc.gnu.org/
[GdkPixbuf]: https://developer.gnome.org/gdk-pixbuf/
[GLib]: https://wiki.gnome.org/Projects/GLib
[GTK+]: https://www.gtk.org/
[libappindicator]: https://launchpad.net/libappindicator
[libX11]: https://www.x.org/wiki/
[libXScrnSaver]: https://www.x.org/wiki/Releases/ModuleVersions/
[MinGW]: http://www.mingw.org/
[OpenAL Soft]: http://kcat.strangesoft.net/openal.html
[Pango]: http://www.pango.org/
[pkg-config]: https://www.freedesktop.org/wiki/Software/pkg-config/
[qrencode]: https://fukuchi.org/works/qrencode/
[Qt]: https://www.qt.io/
[sqlcipher]: https://www.zetetic.net/sqlcipher/
[toxcore]: https://github.com/TokTok/c-toxcore/
[filteraudio]: https://github.com/irungentoo/filter_audio