Я новичок в D и пытаюсь создать простой стартовый проект с субмодулями. В качестве примера я следую исходной структуре d2d , но не могу заставить свой проект компилироваться с использованием DUB.
Моя структура папок:
Ranger
examples
template0 <== compiling in this directory
source
app.d
dub.json
source
ranger
geometry
package.d
point.d
package.d
app.d
содержит:
import std.stdio;
import ranger;
void main()
{
writeln("Edit source/app.d to start your project.");
}
рейнджер / package.d:
module ranger;
public import ranger.geometry;
рейнджер / Геометрия / package.d:
module ranger.geometry;
public import ranger.geometry.point;
Когда я компилирую из каталога template0
, он продолжает давать сбой:
dub build --force
Неверный источник / путь импорта: / home / iposthuman / Документы / Разработка / D / Ranger / examples / template0 / ~ / Документы / Разработка / D / Ranger / source
Выполнение «отладочной» сборки с использованием /home/iposthuman/dlang/dmd-2.084.0/linux/bin64/dmd для x86_64.
template0 ~ master: сборка конфигурации "приложения" ...
/ home / iposthuman / Documents / Development / D / Ranger / source / ranger / package.d (5,15): Ошибка: модуль geometry
находится в файле 'ranger / geometry.d', который не может быть прочитан
путь импорта [0] = исходный путь импорта 1 = / home / iposthuman / Documents / Development / D / Ranger / source
путь импорта [2] = /home/iposthuman/dlang/dmd-2.084.0/linux/bin64/../../src/phobos
путь импорта [3] = /home/iposthuman/dlang/dmd-2.084.0/linux/bin64/../../src/druntime/import
/ home / iposthuman / dlang / dmd-2.084.0 / linux / bin64 / dmd не удалось с кодом выхода 1.
1) Я не понимаю, почему в пути импорта есть два пути, сшитых вместе, не знаю, как это исправить.
2) Я не понимаю, что такое geometry.d, потому что там нет файла с именем geometry.d, но есть папка с пакетом. ... я в замешательстве.
Мой dub.json содержит верный путь к исходному коду моего рейнджера:
{
"authors": [
"William Cleveland"
],
"copyright": "Copyright © 2019, William Cleveland",
"description": "A minimal D application.",
"license": "MIT",
"name": "template0",
"importPaths": [
"source",
"~/Documents/Development/D/Ranger/source"
]
}
Я неправильно использую DUB или неправильно конфигурирую json ???
Я не думал, что использование D будет настолько сложным, просто чтобы заставить что-то работать. Я искал повсюду на Модулях и нашел только тривиальные примеры.
Спасибо.