|
Boost-Build : |
From: TEMPLIE Cédric (cedric.templie_at_[hidden])
Date: 2005-01-03 04:23:15
Pedro Ferreira wrote:
> Hi Volodya,
>
>
> Em 24 Dec 2004, às 08:45, Vladimir Prus escreveu:
>
>
>>Hi,
>>recently, we had a couple of problems caused by using relative file
>>paths, and
>>I'd like to discuss what to do.
>>
>>Let's use the case from Cédric. Simplified version is:
>>
>> exe a : a.cpp dir1/qt_file.h ;
>> exe b : a.cpp dir2/qt_file.h ;
>>
>>Both exes have the same source cpp file but different *.h files --
>>which are
>>processed by Qt tools. V2 currently strips directory name from all
>>targets,
>>so it tries to
>>
>> - create "bin/mvsc/debug/moc_qt_file.cpp" from dir1/qt_file.h
>> - create "bin/msvc/debug/moc_qt_file.cpp" from dir2/qt_file.h
>>
>>There are two solutions that I see:
>>
>> 1. Rewrite the code like:
>>
>> lib aux : a.cpp
>> exe a : aux dir1/qt_file.h : <location-prefix>a ;
>> exe b : aux dir2/qt_file.h : <location-prefix>b ;
>>
>> This way, two version of moc_qt_file.cpp will be generated to
>>different
>> places.
>>
>> 2. Rewrite the code like:
>>
>> obj a_moc : dir1/qt_file.h : <library>/qt//qt ;
>> exe a : a.cpp a_moc ;
>> obj b_moc : dir2/qt_file.h : <library>/qt//qt ;
>> exe b : a.cpp b_moc ;
>>
>> Explicitly changing name for the problematic files.
>>
>> 3. Generally change V2 so that directory part of source is
>>preserved. This
>> will generate targets:
>> "bin/msvc/debug/dir1/moc_qt_file.cpp" and
>> "bin/msvc/debug/dir2/moc_qt_file.cpp". No problems.
>>
>> However, there are some additional questions:
>>
>> - What if source has absolute file name?
>> - What if source is "../../include/qt_file.h"?
>>
>> We can ignore directory names in those cases (i.e. use the
>>current
>> behaviour) but that would be a bit inconsistent.
>>
>>Any opinions?
>
>
>
> I think this is a corner case and BB should not try to solve everything
> automatically - otherwise it will become really complex.
> I don't see a problem in requiring the user to help the build system by
> using solutions 1 or 2.
> Of course, the better the error reporting, the easier it will be to
> find the cause and the cure of the problem.
>
> Regards,
>
> Pedro
>
>
I agree with Pedro. Solution 1 or 2 is the best way to deal with this
problem. Of course I have a preference for the solution 1, but the
solution 2 has the advantage to work without any modification...
TEMPLIE Cédric
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk