[Scons-users] Creation of an archive of source files with Node.all_children()
Paul Grégoire
pg.ensiie at gmail.com
Fri Jan 16 13:12:02 EST 2015
Hi Dirk,
Thanks for the explanation. Unfortunately the workaround that consists in
getting all headers with Glob is not really adapted to my situation.
I use boost libraries and I would like to archive boost headers that are
included from my code, but not all boost headers...
I understand why FindSourceFiles cannot process implicit dependencies, but
getting headers is really my goal.
Could you explain me why using get_allchildren is not recommended and leads
to errors ? Or would you have any other workaround more acceptable to me ?
Many thanks for the time you spend to help me, I really appreciate.
Best Regards
Paul
Le 16 janv. 2015 18:31, "Dirk Bächle" <tshortik at gmx.de> a écrit :
> Paul,
>
> On 16.01.2015 10:03, Paul Grégoire wrote:
>
>> Hi Dirk,
>>
>> Thank you for your answer, your solution works fine, and it works even
>> if I remove the line "env.Append('CPPPATH=['.']).
>> The result is : tar -c -f sub/all_sources.tar sub/SConscript
>> sub/main.cpp sub/define.inc => exactly what I expected.
>>
>> But, if I remove the generation of the file define.h from define.inc,
>> and the subdirectory to simplified, the archive does not contain
>> define.h anymore.
>>
>
> unfortunately the FindSourceFiles() method can't detect implicit
> dependencies to existing files, like the "define.h" in your case. The
> problem is that at the time of calling FindSourceFiles(), no scanning has
> been done yet (we're still in the parsing phase). So SCons simply doesn't
> know that the file node exists yet.
> This is different from the former setup, where the 'define.h' got created
> from 'define.inc' via a Builder. In that case, the file nodes for the
> target and the source are already created in what I call the VFS (virtual
> file system, an internal data structure that keeps track of which
> files/dirs should/will exist), so the FindSourceFiles() can find them.
>
> One workaround is to create a file node for the header file, before
> calling FindSourceFiles():
>
> env = Environment()
>
> env.Append(CPPPATH=['.'])
> env.File('define.h')
> foo = env.Program('foo', 'main.cpp')
>
> env.Tar('foo', FindSourceFiles())
>
> An env.File(Glob('*.h')) should work fine in general...
>
> Regards,
>
> Dirk
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150116/3529bc5e/attachment.html>
More information about the Scons-users
mailing list