D 正在尝试导入某些模块,但无法获取;。。“这是无法阅读的”;
我是D新手,正在尝试创建一个带有子模块的简单启动项目。例如,我一直在遵循源代码结构,但我无法使用DUB编译我的项目 我的文件夹结构是:D 正在尝试导入某些模块,但无法获取;。。“这是无法阅读的”;,d,D,我是D新手,正在尝试创建一个带有子模块的简单启动项目。例如,我一直在遵循源代码结构,但我无法使用DUB编译我的项目 我的文件夹结构是: Ranger examples template0 <== compiling in this directory source app.d dub.json source ranger geometry package.d point.d packag
Ranger
examples
template0 <== compiling in this directory
source
app.d
dub.json
source
ranger
geometry
package.d
point.d
package.d
ranger/package.d:
模块测距仪;
公共导入ranger.geometry;
ranger/geometry/package.d:
模块ranger.geometry;
公共导入ranger.geometry.point;
当我从template0
目录编译时,它总是失败:
配音构建——强制
无效的源/导入路径:/home/iposthman/Documents/Development/D/Ranger/examples/template0/~/Documents/Development/D/Ranger/source
使用/home/iposthman/dlang/dmd-2.084.0/linux/bin64/dmd为x86_64执行“调试”生成
模板0~主:构建配置“应用程序”
/home/iposthman/Documents/Development/D/Ranger/source/Ranger/package.D(5,15):错误:模块geometry
位于文件“Ranger/geometry.D”中,无法读取
导入路径[0]=源导入路径=/home/iposthman/Documents/Development/D/Ranger/source
导入路径[2]=/home/iposthman/dlang/dmd-2.084.0/linux/bin64/../../src/phobos
导入路径[3]=/home/iposthman/dlang/dmd-2.084.0/linux/bin64/../../src/druntime/import
/home/iposthman/dlang/dmd-2.084.0/linux/bin64/dmd失败,退出代码为1
{
"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会这么困难。我搜索了所有模块,只找到了一些微不足道的例子
谢谢。Dub不会将
~
翻译到您的主目录<代码>~是POSIX语言,但dub是一个跨平台应用程序
使用/home/iposthman/Documents/Development/D/Ranger/source
或。/../source
更倾向于后者,因为当您的用户名更改或您与其他人共享您的项目时,它不会中断。我认为weltensturm的答案是正确的,但有点偏离。我会改变
"importPaths": [
"source",
"~/Documents/Development/D/Ranger/source"
]
到
基本上,您只需要再返回一个目录即可访问源代码
我不理解涉及geometry.d的文件,因为没有一个名为geometry.d的文件——但是有一个文件夹包含一个包。。。我很困惑
这是因为当您导入模块时,dub希望有一个同名文件或一个package.d文件,就像您在一个名为模块的文件夹中一样。因此,如果您执行导入foo
在名为foo的文件夹中应该有一个名为foo.d或package.d的文件,该文件夹具有模块foo代码>在它的开头。我认为您所做的是正确的,但是由于您的导入路径错误,dub在错误的位置查找geometry.d或文件夹geometry
请注意,您始终可以使用dub将要导入的文件夹转换为包。然后运行dub add local./
。然后,您可以通过执行“我的项目”:“~master”
将其作为依赖项添加到另一个项目中。我不确定这是否会导致您的问题,但您的源路径应该是相对的。使用“../../../../source”不是绝对的“~/Documents/Development/D/Ranger/source”LOL。我尝试了这个组合和其他一些组合,但没有成功。如果你问题中的目录树是正确的,它会起作用,但我猜source
也是Ranger
的子目录?那么应该是两个。
s而不是三个。是的。尝试绝对的,但配音似乎只是附加在一起的东西。
"importPaths": [
"source",
"../../../source"
]