# Проект dub.json

Описание основных настроек на [официальном сайте](https://dub.pm/package-format-json).

Структура файла `dub.json`:

```js
{
  "name" : "app",
  "authors" : [
    "Alexander Zhirov"
  ],
  "homepage" : "https://zhirov.website/",
  "license" : "GPL-2.0",
  "copyright" : "Copyright © 2021, alexander",
  "description" : "My program",
  "libs" : [
    "stdc++"
  ],
  "preBuildCommands" : [
    "g++ -c source/*.cpp",
    "mv *.o objcpp/"
  ],
  "sourceFiles" : [
    "objcpp/foo.o"
  ]
}
```

Описание полей:

|Параметр|Тип|Описание|
|--------|---|--------|
|`name`|`string`|Имя пакета, используемое для уникальной идентификации пакета.|
|`authors`|`string[]`|Список авторов проекта|
|`homepage`|`string`|URL-адрес веб-сайта проекта|
|`license`|`string`|Лицензия, под которой может использоваться проект|
|`copyright`|`string`|Строка декларации авторских прав|
|`description`|`string`|Краткое описание пакета|
|`libs`|`string[]`|Список имен внешних библиотек - в зависимости от компилятора они будут преобразованы в соответствующий флаг компоновщика (например, `ssl` может быть переведен в `-L-lssl`)|
|`preBuildCommands`|`string[]`|Список команд оболочки, выполняемых до создания пакета|
|`sourceFiles`|`string[]`|Дополнительные файлы, передаваемые компилятору - может быть полезно добавить определенные зависимые от конфигурации исходные файлы, которые не содержатся в общей папке исходного кода|

`source` - общая папка исходного кода:

```sh
.
├── app
├── dub.json
├── dub.selections.json
├── objcpp
│   └── foo.o
└── source
    ├── app.d
    └── foo.cpp
```