On Sunday, 6 July 2014 at 08:09:07 UTC, Rainer Schuetze wrote:


On 05.07.2014 16:05, ParticlePeter wrote:
...
It is possible to remove the template methods from my classes, create
free functions instead and use them in a UFCS way.
Unfortunately I have not figured out UFCS properly, as my approaches do
not work ( guess due to UFCS restrictions ).


That would not help, templates are instantiated and compiled when they are used, not when they are declared.

Hence the idea of splitting the class. After the split, the class has only non-template methods and is part of MyLib. Template UFCS functions working with this class are in another module, and not part of the lib. With this approach MyLib does not need to recompile, only the UFCS functions module needs to recompile due to different instantiations. UFCS works now for me btw.


I tried to not build MyLib at all, and use the sources directly, but the project setup is kind of confusing. Again, there is a setting which I seem to not understand fully. So one project, lets say MyProject, has only its own module files added to the VisualD project. I want the compiler to also use the MyLib source files, but do not want to add them to MyProject, reasoning bellow. There is one entry in the project properties, which should make this behavior possible, but it doses not.
Why ?

Configuration Properties - Compiler - General - Additional Imports

As far as I understand this setting, I am supposed to enter module
search paths.

This is correct.

> But I do get linker errors when I do not add either
MyLib.lib to the linker settings or all the source files of MyLib to
MyProject.


You should add a dependency in the "Project -> Project Dependencies" dialog. This will ensure proper rebuilds and add the library to the command line of dependent projects.

The idea is to NOT create a lib, but just use the source code from MyLib in MyProject as additional includes. No project dependencies. I was hoping that some .obj files are still available from last builds, and do not need to recompile, as they are up to date ( reason for question about not cleaning files ). 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.

Reply via email to