Как добавить и запустить подпакеты в Dub?
Project/
dub.sdl/
source/
examples/
test/
source/
app.d
dub.sdl
Проект /dub.sdl
...
subpackage "./examples/test"
...
Проект / примеры / тест /dub.sdl
name "test"
targetType "executeable"
Если я попытаюсь выполнить dub run test
если получите следующую ошибку
Failed to parse package description for test in Project/examples/test.
Failed to find a package named 'test'.
То же самое происходит, если я пытаюсь выполнить dub run :test
,
2 ответа
Решение
В команде вы должны добавить префикс имени пакета к имени корневого пакета.
dub run rootpackagename:test
Похоже, вам нужно указать run
(или же build
или какая-то другая команда) явно).
По состоянию на 2017 год с версией dub 1.3.0: <rootpackagename>
не является обязательным. Например, я тестировал пакет jsoniopipe следующим образом:
# Add dependency which is not found on dub's repo:
git clone https://github.com/schveiguy/iopipe ../iopipe
dub add-local ../iopipe
файл dub.sdl:
name "jsoniopipe"
description "JSON parser for iopipe"
authors "Steven Schveighoffer"
copyright "Copyright © 2017, Steven Schveighoffer"
license "boost"
targetType "library"
dependency "iopipe" version="*"
subPackage {
name "formatjson"
targetType "executable"
sourcePaths "examples/formatjson"
dependency "jsoniopipe" version="*"
}
Содержание testjson.json
{
"name": "myproject",
"authors": [
"My Name"
],
"description": "My first project",
"copyright": "Copyright © 2017, imadev",
"license": "Boost"
}
Команда запуска:
dub run :formatjson -- ./testjson.json