Make [was Re: SCons and gdc]
1100110
0b1100110 at gmail.com
Tue Oct 23 18:55:52 PDT 2012
On Tue, 23 Oct 2012 18:49:45 -0500, Rob T <rob at ucora.com> wrote:
> I may be getting messed up by the way modules map directly to folder
> structures, and how to separate an interface from the implementation.
>
> Eg. import A.m1;
>
> I understand that the above import requires that a folder "A" be found
> at the root level of the source folder (where ever it may be), and
> module m1.d must be located directly in A. So far so good, however A may
> be located in a folder outside of the current project. For example, the
> std lib imports are located outside you projects root folder (this is a
> goal to acheive what I want to reproduce with my own D prebuilt
> libraries).
>
> When I try to import from another project located in another set of
> folders, how do I tell the compiler to start looking at a certain point?
>
> For example
>
> /projects/
> /p1
> /src
> /A
> /B
> /C
>
> /p2
> /src
> /D
> /E
> /F
>
> With the above folder structiure, how can I get this to work?
>
> import A.m1;
> import D.m2;
>
> I may be able to manually get something to work, but how can it be
> automated with scons? I know I'll have to manually supply the project
> search paths somehow, but will scons be able to figure out that "import
> D.m2;" means to look under /projects/p2/src/D/?
>
> Also if I make an edit to D/m2.d will scons be able to figure out that
> D/m2.d needs to be rebuilt and/or that all files that import D/m2.d must
> be rebuilt?
>
> In C/C++ full rebuilding is only required when header files (.h) are
> modified and included, not when the implementation is modified. How do
> we make the distinction between the interface and the implementation in
> D?
>
> Perhaps I should be building interface files (.di), how is that done and
> how do you refer to them after they are built?
>
> Finally how do you specify an alternate folder for dumping the build
> stuff to separate it from being dumped into your source folders? Also
> how to you specify an installation folder, eg /usr/local/bin along with
> location of necessary import folders. I definitely do not want to
> install full source code so that imports will work, so I assume the .di
> files are installed instead.
>
> I know I'm asking a lot of basic questions which means I havn't much
> clue how to build D apps yet, so are there any good examples or
> documentation I can look at that will supply me with the answers?
>
> ps: I'm an experienced C++ programmer, so the tendancy is to replicate
> the same practice, however I'm definietly open to better ways that make
> the most out of D.
>
> Thanks for any help you gave give!
>
> --rt
>
rdmd -Ip1/src -Ip2/src appThatImports.d
Or dmd appThatImports.d p1/src/A/m1.d p2/src/B/m2.d.
But you might still need the -I flag for the second, I don't remember...
I prefer simply using rdmd and -I flags to figure out the import paths.
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list