Visual D: Settings to Improve compil and link process

Rainer Schuetze via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jul 7 15:00:47 PDT 2014



On 07.07.2014 12:46, ParticlePeter wrote:
> On Sunday, 6 July 2014 at 19:27:38 UTC, Rainer Schuetze wrote:
>
>> These object files are in the library ;-) That means manual selection,
>> though, as incremental builds to multiple object files don't work with
>> dmd, and single file compilation is painfully slow.
>
> Not sure if I am getting this right, so when one object file has to be
> recompiled all other object files, even if up to date, would be
> recompiled ?

That's how it is currently done if you don't use "single file 
compilation". Compiling only modified and dependent modules in one step 
could work incrementally, but especially template instantiations make 
this hard to do correctly.

>
>>> The modules form MyProject do import the MyLib modules properly, I do
>>> not get compiler errors. However, the compiler should create Object
>>> files from MyLib modules, and the linker should link them. But he
>>> does not.
>>> On the other hand, when I add MyLib modules to MyProject ( Rightclick
>>> MyProject - add - existing item... MyLib source files ) then linking
>>> works. I do not understand why the later step is necessary.
>>
>> dmd does not compile imported modules, but rdmd does.
>
> Ähm ... not seeing the connection here either, why is this significant ?

dmd just compiles the files given on the command line. rdmd makes two 
passes, one to collect imported files, and another to compile all the 
collected files. So rdmd works the way you want dmd to work (if I 
understand you correctly).

> I feel that I could not explain my problem properly, so one example:
> Importing phobos modules. I do not have to define any import path or lib
> file in the project settings, I just need to import std.somthing. That's
> because the import path for phobos modules are stored in the dmd sc.ini
> file.
> When I want to import my modules which are somewhere on my hard-drive
> and not added to my project I need to tell the compiler where these
> modules can be found, using the additional import path project setting.
> That's fine, doing this.
>
> But result is, std.somthing works, my modules in a path known by the
> compiler don't work, giving me linker errors. Why ? ( I do not create a
> lib, I just want to import the module. )
>

phobos is precompiled to a library and is automatically included in the 
link. If you want your custom modules to work the same way, you have to 
compile them to a library.



More information about the Digitalmars-d-learn mailing list