首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DMD:对连接和建设的误解

DMD:对连接和建设的误解
EN

Stack Overflow用户
提问于 2014-05-27 11:38:15
回答 1查看 90关注 0票数 1

我正在尝试构建一个项目,在Windows中使用DMD编译器本身(没有IDE)。我发现自己很难意识到一些关于链接的时刻。通常IDE是为我这样做的。

我的项目的结构

代码语言:javascript
复制
project
├──bin
|   ├──exemple.obj
|   └──exemple.exe
└──src
    ├──a
    |  └──b.d
    └──exemple.d

样例d

代码语言:javascript
复制
import a.b;
void  main() { B obg = new B(); }

B.D.

代码语言:javascript
复制
module a.b;
class B {
    private int i;
    public this() {i=0;}
    public void act() {i++;}
}

起初,用命令来构建它似乎很容易:

代码语言:javascript
复制
cd C:\path\to\my\project
dmd bin\exemple.exe src\exemple.d -IC:\path\to\my\project\src

但它只给我看了一些错误的按摩:

代码语言:javascript
复制
OPTLINK (R) for Win32  Release 8.00.13
Copyright (C) Digital Mars 1989-2010  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
bin\exemple.obj(exemple)
 Error 42: Symbol Undefined _D1a1b1B7__ClassZ
bin\exemple.obj(exemple)
 Error 42: Symbol Undefined _D1a1b1B6__ctorMFZC1a1b1B
--- errorlevel 2

最后,我猜到obj文件不见了。我用命令手动创建了:

代码语言:javascript
复制
cd bin
dmd ..\src\a\b.d -c
cd ..

手动将其添加到构建命令中:

代码语言:javascript
复制
dmd bin\exemple.exe src\exemple.d -IC:\path\to\my\project\src bin\b.obj

现在起作用了。

太棒了。但是如果我们有很多额外的d文件和复杂的文件夹结构呢?

,它怎么能被原子化?

当我发现DMD并没有自动完成这一切时,我非常惊讶。也许,我只是做错了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-27 12:20:40

您不需要单独构建一个/b/d。但是,您必须将所有源(或对象)文件传递给dmd。dmd没有计算出依赖项。

看看rdmd。它是一个工具,它确实计算出依赖项,然后在所有这些依赖项上运行dmd (然后它默认运行可执行文件,--build-only会防止这种情况)。它附带了dmd版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23888440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档