On Sunday, 6 July 2014 at 19:27:38 UTC, Rainer Schuetze wrote:
Ok, that allows separate compilation of the class, but
templates are still compiled with the rest of the program. I
thought the templates were the part that cause the slow
compilation.
I had no chance to profile till now, but I don't think that the
templates are slow. They just extract type information from
primitive or struct arrays, and pass the type info and void array
on. I have the impression that the whole rebuild-relink process
of the library itself was taking so long, so I wanted ensure that
the non-templte code ( the majority ) does not have to be
compiled over and over again.
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 ?
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 ?
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. )