D-主模块位于“文件”中;主体部分d“;使用DUB编译时无法读取的

D-主模块位于“文件”中;主体部分d“;使用DUB编译时无法读取的,d,dub,D,Dub,对于dub.json,我有以下内容: { "name": "foo", "targetType": "executable", "sourceFiles": ["main.d"], "mainSourceFile": "main.d", "importPaths": ["src"], "sourcePaths": ["src"], } 我在src文件夹中有我的main.d(带有类似hello world的基本程序)。如果我运行dub build,

对于dub.json,我有以下内容:

{
    "name": "foo",
    "targetType": "executable",
    "sourceFiles": ["main.d"],
    "mainSourceFile": "main.d",
    "importPaths": ["src"],
    "sourcePaths": ["src"],
}
我在
src
文件夹中有我的
main.d
(带有类似hello world的基本程序)。如果我运行
dub build
,我会得到问题标题中提到的错误。如果我将
main.d
src
移动到
dub.json
所在的同一目录,错误就会消失。我非常希望将源代码保存在
src
中,但这不会编译。我怎么修理它

我知道有两个问题:,但情况与这两个不同。在第一个例子中,找不到的模块是一个依赖项,这里不是这种情况。在第二种情况下,编译是手动执行的,而不是通过DUB执行的(尽管我已经尝试将
-Isrc
传递给编译器,作为对该问题的回答,但是没有帮助)


我在Arch Linux(64位)和LDC v1.2.0上使用DUB v1.3.0(但如果我使用DMD v2.074.0,也会发生同样的情况)

如果您只使用:

{
    "name": "foo",
    "targetType": "executable",
    "sourcePaths": ["src"]
}

如果您仅使用以下选项,则似乎有效:

{
    "name": "foo",
    "targetType": "executable",
    "sourcePaths": ["src"]
}

尝试删除
sourceFiles
行。对于
sourcepath
来说,它应该是不必要的,并且可能会迫使它查找错误的位置。@AdamD.Ruppe没有帮助,不幸的是。sourceFiles不采用模块名,它采用相对于
dub.json
的路径<代码>“sourceFiles”:[“src/main.d”]应该可以工作,但您不需要单独指定每个文件。查看NotSpooky的答案,了解一般方法。尝试删除
sourceFiles
行。对于
sourcepath
来说,它应该是不必要的,并且可能会迫使它查找错误的位置。@AdamD.Ruppe没有帮助,不幸的是。sourceFiles不采用模块名,它采用相对于
dub.json
的路径<代码>“sourceFiles”:[“src/main.d”]应该可以工作,但您不需要单独指定每个文件。请看NotSpooky的答案,了解一般方法。