On Monday, 7 July 2014 at 22:00:51 UTC, Rainer Schuetze wrote:
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.
Thanks for claryfying all the above. If the std.library is
rebuild whenever a template is used, than my assumption that
MyLib compiles slow due to usage of ( very simple ) templates
must be wrong. I will dive deeper into profiling. Thanks a lot.
Cheers, ParticlePeter