On 2014-09-04, at 12:28 PM, Christian Kandeler <[email protected]> 
wrote:

> Hi,
> 
> On 09/04/2014 05:33 PM, olivier musse wrote:
>> With QBS 1.3 we are trying to defined a post build process on our
>> product (a dynamiclibrary) to call install_name_tool in order to change
>> some library dependencies.
>> For that we defined the following rule (MyLib is defined as a type of
>> the product)
>> Rule{
>> 
>>         inputs:  ['dynamiclibrary']
>> 
>>         Artifact  {
>> 
>>             filePath:  input.filePath
>> 
>>             fileTags:  "MyLib"}
>> 
>>         prepare:  {
>> 
>>       ......
>> 
>>         }
>> 
>>     }
>> 
>> 
>> When doing that, we get a conflict rule message with the internal qbs
>> file (GenericGCC.qbs:113:18)
>> Apparently this is because our rule as the same file as input and output.
> 
> in general, the question of how to "enrich" a build artifact is an 
> unsolved problem. I think https://bugreports.qt-project.org/browse/QBS-5 
> is referring to this issue as well.
> But for your case, why not just use cpp.installNamePrefix?
> 
>> With previous version of QBS it was possible to do it.
> 
> I don't think so. Can you give an example project where you do that 
> which works with qbs 1.2 but not wit 1.3?
> 
> 
> Christian
> _______________________________________________
> QBS mailing list
> [email protected]
> http://lists.qt-project.org/mailman/listinfo/qbs


Any solution that uses install_name_tool is, 99% of the time, a broken solution 
(the only valid case I can think of is where a binary-only third party library 
you're using has a wrong install name). Certainly for your own code, you should 
be using the linker flags -install_name and -rpath, which are accessible in qbs 
using the cpp.installNamePrefix and cpp.rpaths properties.

Almost all of the time, cpp.installNamePrefix should be set to "@rpath", and 
cpp.rpaths should generally be @executable_path/../Frameworks or 
@loader_path/../Frameworks depending on where a given binary's dependencies 
reside (note that rpaths is a LIST, so you can have multiple search paths).

Also see Apple's documentation on dyld: 
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dyld.1.html
 (relevant parts at the bottom).

Hope that helps.
-- 
Jake Petroules - jake.petroules at petroules.com
Chief Technology Officer - Petroules Corporation

_______________________________________________
QBS mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/qbs

Reply via email to