On Mar 30, 2010, at 10:36 AM, Ed Sutton wrote:

> Sorry, I am stuck on this...
> 
> When it comes to dynamically loaded shared libs that are required at link 
> time, I can not figure out the trick of completely removing hard-coded paths 
> from my Qt Creator project build environment.  Setting LD_LIBRARY_PATH under 
> the Qt Project Build Environment to a relative path works fine for building / 
> linking. Example:
> 
> LD_LIBRARY_PATH=/opt/qtsdk-2010.02/lib/qtcreator:/home/esutton/projects/myproject/guiproject/../../lib
> 
> 
> Question: How can I replace the base part of the relative path with a 
> variable?
> 
> Replacing with $(PWD), does not work.  Apparently at the build environment 
> stage, PWD is set to the qmake working directory of 
> "/opt/qtsdk-2010.02/qt/bin"
> 
> LD_LIBRARY_PATH=/opt/qtsdk-2010.02/lib/qtcreator:$(PWD)/../../lib
> 
> 
> 
> Can a variable added to the Qt project file be referenced in the Qt project 
> Build Environment ?
> 
> I tried adding this to my Qt Project File:
> 
> MYLDLIBPATH = $$PWD/../../lib
> message(MYLDLIBPATH == $$MYLDLIBPATH)
> 
> and adding a reference to this variable in the Qt project Build Environment:
> 
> LD_LIBRARY_PATH=/opt/qtsdk-2010.02/lib/qtcreator:$(MYLDLIBPATH)
> 
> This does *not* work even though the qmake message displays the desired path:
> 
> Project MESSAGE: MYLDLIBPATH = 
> /home/esutton/projects/myproject/guiproject/../../lib
> 
> I am building under Red Hat Enterprise Linux 5.x.  I do not want to use rpath 
> because I want to avoid hard-coded paths in released binaries.  My goal is to 
> retrieve source code from the repository and to build a release using:
> 
> qmake myproject.pro
> make
> 
> 

I found a solution myself for linking to shared libraries.  Use rpath-link ( 
Just like the linker warning had informed me ;-)  

If I understand it correctly, rpath-link, tells the linker where to look for 
run-time shared libs to link with and unlike rpath will not hard-code any 
run-time paths into my binaries.

LIBS += -L../../lib
#Note the character following the -Wl switch is a lower-case 'L'
LIBS += -Wl,-rpath-link,$$PWD/../../lib
LIBS += -lmysharedlib 

-Ed



_______________________________________________
Qt-creator mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-creator

Reply via email to