# Использование параметров

Общие правила использования параметров

```
cqtdeployer -option1 value1 -option2 list,of,values flag1 flag2 flag3
```

* Все параметры должны начинается с знака '-' за исключением параметров, из котегории "Флаги".
* После указания нужного параметра нужно в обязательном порядке указать значение
* Некоторые параметры поддерживают перечисления (массивы значений). При инициализации таких параметров укажите список значений через ',' без прабелов. Если вы используете какой либо язык программирования и вызываете процесс cqtdeployer то массив значений должен передаваться как 1 параметр.
* Некоторые параметры поддерживают пересисления с возможностью выбрать цель для которой будет применен флаг. Цель и значения разделяются при помощи знака ';'. Пример -libOut target1;value1,target2;value2,defaultValue.
* Для включения какого либо флага достаточно просто включить в список опций имя флага.

## Обозначения в таблице

 * **-binDir [params]** - параметр без поддержки массивов.
 * **-bin [params,list]** - параметр c поддержкой массивов. В качестве разделителя используется ','.
 * **-libOut [package;path,path]** - параметр c поддержкой выбора пакета для которого бутет установленно значение флага. В качестве разделителя используется ';'. Обратитте внимание что для перечисления значений параметра используется правило описанное выше. Последний параметр не имеет значение пакета, это значит что это значение будет установленно для всех не настроенных пакетов по умолчанию.
 * **clear** - флаг

## Определения в описании

**Системное окружение** - пути к системным библиотекам.
  * Windows:
    * Пути, определенные в переменной PATH.
    * C:/Windows/System32
    * C:/Windows/SysWOW64
    
  * Linux:
    * Пути, определенные в переменных LD_LIBRARY_PATH и PATH.
    * /usr/lib
    * /lib

**Развертываемые файлы** - это все файлы, которые будут скопированы в дистрибутив (включая исполняемые файлы)

**Цели** - это все исполняемые файлы, отмеченные опцией bin.

**Исполняемые файлы** - это все файлы в форматах PE, ELF и Mach-O.

## Параметры:

### Флаги

| Option                      | Descriptiion                                              |
|-----------------------------|-----------------------------------------------------------|
|   init                      | проинициализирует файл cqtdeployer.json (файл конфигурации)|
|                             | Например: «cqtdeployer init» - для инициализации базовой конфигурации пакета|
|                             | "cqtdeployer -init multi" - для инициализации конфигурации нескольких пакетов|
|                             | "cqtdeployer -init single" - для инициализации конфигурации одного пакета |
|   help / h                  | Показывает справку                                        |
|   clear                     | Удаляет все старые файлы (с прошлого запуска)             |
|   force-clear               | Удаляет целевую директорию перед развертыванием           |
|   noStrip                   | Пропускает шаг strip                                      |
|   noTranslations            | Пропускает файлы переводов                                |
|   noOverwrite               | Запрещает замену уже существующих файлов.                 |
|   noCheckRPATH              | Отключает автоматический поиск путей к qmake в исполняемых файлах.|
|   noCheckPATH               | Отключает автоматический поиск путей к qmake в системном окружении.|
|   noRecursiveiIgnoreEnv     | Отключает рекурсивное игнорирование переменной среды для флага ignoreEnv.  |
|   v / version               | Показывает версию приложения                              |
|   qif                       | Создаст установщик QIF для развертываемой программы"      |
|                             | Примеры: cqtdeployer qif                                  |
|                             | Начиная с версии CQtDeployer 1.5 вы можете указать путь к своему собственному шаблону установщика. |
|                             | Примеры: cqtdeployer -qif path/to/myCustom/qif. Подробнее можно посмотреть [здесь](QIF.md)        |
|   deb                       | Создаст deb пакет для развертываемой программы"      |
|                             | Примеры: cqtdeployer deb                                  |
|                             | Вы можете указать путь к своему собственному шаблону пакета. |
|                             | Примеры: cqtdeployer -deb path/to/myCustom/DEBIAN. Подробнее можно посмотреть [здесь](DEB.md)        |
|   deploySystem              | Копирует все библиотеки кроме libc                        |
|                             | (не рекомендуется, так как занимает много памяти, возможны конфликты библиотек)         |
|   noQt                      | Игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует платформу qt.                             |
|   allowEmptyPackages        | Разрешите настраивать пустые пакеты.                            |
|   getDefaultTemplate        | Извлекает deb или qif шаблоны по умолчанию. Для получения дополнительной информации см. [Страницу](ExtractDefaultsTemplates.md) извлечения шаблонов по умолчанию.       |
| noHashSum | Отключить вычисление хеш-суммы пакетов | 

### Параметры развертывания:

| Option                      | Descriptiion                                              |
|-----------------------------|-----------------------------------------------------------|
|  -bin    [list,params]     | Развертываемый файл или папка. пример -bin ~/my/project/bin/,~/my/project/bin.exe. Для файлов: эти файлы будут безоговорочно скопированы в целевой каталог, независимо от их формата или суффикса. Для папок: CQtDeployer войдет в эти папки и нерекурсивно скопирует все развертываемые файлы в целевой каталог. Затем CQtDeployer извлечет все зависимости скопированных файлов. CQtDeployer будет искать зависимости в системной среде и в путях libDir.   |
|   -binPrefix [prefixPath]   | Устанавливает путь префикса для опции bin. Пример: **-bin path/MyExecutable** - это тоже что и **-bin MyExecutable -binPrefix path**  |
|  -confFile [params]         | Путь к файлу json со всеми конфигурациями развертывания. С помощью этого файла можно добавить нужные опции, тем самым упрастить вызов комманды в консоле. Однако пораметры в кансоле имеют больший приоритет чем в файле. Для получения дополнительной информации об этом флаге см. [Вики](DeployConfigFile) |
|  -qmlDir [params]           | Папка qml. пример -qmlDir ~/my/project/qml                |
|  -qmake  [params]           | Путь к qmake. пример                                      |
|                             | -qmake ~/Qt/5.14.0/gcc_64/bin/qmake                       |
|  -ignore [list,params]      | Список библиотек для игнорирования                        |
|                             | Пример -ignore libicudata.so.56,libicudata2.so.56         |
|  -ignoreEnv [list,params]   | Список путей для игнорирования.                           |
|                             | Пример -ignoreEnv /bad/dir,/my/bad/Dir                    |
|  -libDir [list,params]      | Устанавливает дополнительные пути к библиотекам           |
|                             | Пример -libDir ~/myLib,~/newLibs. **Внимание** опция libDir не должна быть дочерней от каталога targetDir. Опция targetDir является запрещенной для поиска библиотек, так как может содержать устаревшие библиотеки проекта, что в свою очередь может привести к нежелательным крашам.                      |
|  -extraLibs [list,params]   | Пример: «-extraLib mySql» - заставляет скопировать все библиотеки, имена которых содержат mySql, в папку проекта. Этот параметр не чувствителен к регистру в Windows и чувствителен к регистру на других платформах. Эта опция будет искать библиотеки только в системных средах, подобных **deploySystem**. |
|  -customScript [scriptCode] | Установит дополнительный код в скрипты запуска.           |
|  -extraPlugin [list,params] | Устанавливает дополнительный путь для extraPlugin приложения|
|  -recursiveDepth [params]   | Устанавливает глубину поиска библиотек и глубину игнорирования окружения для ignoreEnv (по умолчанию 0)   |
|  -targetDir [params]        | Устанавливает целевой каталог (по умолчанию это путь к первому развертываемому файлу)|
|  -installDirDeb [параметры] | Устанавливает целевой каталог для установки пакета Debian (по умолчанию это /opt путь) |
|  -installDirQIFW [параметры]| Устанавливает целевой каталог установки для инсталляторов (по умолчанию это путь /home) | 
|  -verbose [0-3]             | Показывает дебаг лог. По умолчанию равен 2                |

### Параметры управлениями пакетами:

| Option                      | Descriptiion                                              |
|-----------------------------|-----------------------------------------------------------|
|  -targetPackage [package;tar1,package;tar2]| Создает новый пакет и добавляет в него 'tar1 и tar2'|
|  -qmlOut [package;path,path] | Установит путь к папке с qml                              |
|  -libOut [package;path,path] | Установит путь к папке с зависимостями                    |
|  -trOut [package;path,path]  | Установит путь к папке с файламми переводов               |
|  -pluginOut [package;path,path]| Установит путь к папке с плагинами                      |
|  -binOut [package;path,path] | Установит путь к папке с исполняемыми файлами             |
|  -recOut [package;path,path] | Установит путь к папке с ресурсами                        |
|  -extraDataOut [package;path,path] | Устанавливает путь к каталогу с дополнительными файлами данных. По умолчанию это корневой каталог дистрибутива.         |
|  -name [package;val,val]     | Установит имя пакету. Если указать значение без префикса, то значение будет установленно пакету по умолчанию. |
|  -description [package;val,val] | Установит описание пакету                            |
|  -deployVersion [package;val,val]| Установит версию пакету                            |
|  -releaseDate [package;val,val] | Установит дату выпуска пакету                        |
|  -icon [package;val,val]     | Установит путь к иконке или логотипу пакету             |
|  -publisher [package;val,val]| Установит Издательство (автора) пакету                  |
|  -homePage [package;val,val] | Установит URL-адрес домашней страницы для пакета          |
|  -prefix [package;val,val]   | Устанавливает префикс для пакета относительно целевого каталога |
|  -extraData [package;val,val]| Добавляет дополнительные файлы или каталоги как цель. Выбранный каталог будет скопирован в расположение extraDataOut с сохранением собственной структуры.|
|  -tr [package;val,val]       | Добавляет qm файлы в папку переводов.                      |

### Параметры управлениями целями:

| Option                      | Descriptiion                                              |
|-----------------------------|-----------------------------------------------------------|
|  -icon [target;val,val]     | Установит путь к иконке или логотипу для целе. Эта комманда поддерживает только png файлы для Linux и ico файлы для Windows  |
|  -disableRunScript [target; val, val]| Отключает создание сценария выполнения для выбранных целей |
|  -disableShortCut [target; val, val] | Отключает создание ярлыков для выбранных целей | 
|  -runScript [target; val, val]  | заставляет cqtdeployer заменить сценарий запуска по умолчанию на новый из аргументов параметра. Эта опция копирует все содержимое из входного файла и вставляет весь код в runScript.sh или .bat. Пример использования: cqtdeployer -runScript "myTargetMame;path/to/my/myCustomLaunchScript.sh,myTargetSecondMame;path/to/my/mySecondCustomLaunchScript.sh". Для получения дополнительной информации смотрите статью [Кастомные скрипты](CustomScripts.md)|

### Параметры управления плагинами:

| Option                      | Descriptiion                                              |
| ----------------------------|---------------------------------------------------------- |
| -extraPlugin [пакет; val1; val2, SingeleVal] | Устанавливает дополнительный путь к стороннему плагину приложения |
| -enablePlugins [target,target2,target3]  | Включает дополнительные плагины для распространения. |
| -disablePlugins [target,target2,target3] | Отключает плагины для распространения. |
| | Вы можете отключить любой плагин вашей сборки Qt, просто проверте список доступных плагинов в свой qlFolder/plugins папке.
| | Пример: Если вы хотите отключить плагин qxcb: -disablePlugins qxcb. Обратите внимание, что имя плагина указывается без его расширения.

### Параметры QtInstallFramework:

| Option                      | Descriptiion                                              |
|-----------------------------|-----------------------------------------------------------|
|  -qifStyle [path/to/style.css]| Устанавливает путь к CSS файлу стиля или устанавливает стиль по умолчанию. Доступные стили: quasar |
|  -qifBanner [path/to/banner.png]| Устанавливает путь к png-файлу баннера.                                      |
|  -qifLogo [path/to/logo.png]| Устанавливает путь к файлу логотипа png.                            |
|  -qifOut [nameOfOutputInstallerFile] | Устанавливает имя выходного установщика qifw. Примечание: для установщика Windows автоматически добавляется суффикс exe.  |
|  -qifConfig [path/to/config.xml] | Устанавливает пользовательский путь к файлу конфигурации установщика qt ifw. По умолчанию это qif/config/config.xml. Важно путь считаеться относительным целевого католога (установленным опцией targetDir).  |
|  -qifPackages [path/to/packagesFodoler] | Устанавливает пользовательский путь к каталогам пакетов. По умолчанию это qif/packages. Важно путь считаеться относительным целевого католога (установленным опцией targetDir).   |
|  -qifResources [path/to/resources1.qrc,path/to/resources2.qrc] | Устанавливает пользовательский путь к файлам ресурсов. По умолчанию эта опция пропущена. Важно путь считаеться относительным целевого католога (установленным опцией targetDir).  |

### Deb package options:

| Option                      | Descriptiion                                              |
|-----------------------------|-----------------------------------------------------------|
|  -debOut [package;nameOfOutputDebFile,nameOfOutputDebFile]| Устанавливает имя выходного файла debian. Эта опция может работать с несколькими пакетами  |

### Zip pacakge options:

| Option                      | Descriptiion                                              |
|-----------------------------|-----------------------------------------------------------|
|  -zipOut [package;nameOfOutputZipFile,nameOfOutputZipFile]| Устанавливает имя выходного zip архива. Эта опция может работать с несколькими пакетами  |


#### Пример: cqtdeployer -bin myApp -qmlDir ~/MyAppProject/qml -qmake ~/Qt/5.15.0/gcc_64/bin/qmake clear
