>> The problem I have is that when have already built and
>> installed B I can not move anymore the location of the A. This
>> is because the libraries created in B contains the absolute
>> path to exported libraries in A.
>
> The binaries in B would at most contain RPATH entries to point at the
> location of A. CMake computes this RPATH information to ensure that
> the binaries can run without special environment variables by default.
> This works on the original machine. If you want to redistribute the
> binaries then you have to tell CMake not to store RPATH information.
> This is totally separate from whether the libraries are handed to the
> linker by full path or not.
What I observe is that the library which is built using an imported library
target keeps the full path of it in the build directory and in the installation
directory. I can see this with the ldd command in the build and installation
tree:
$ ldd libLHCbMathLib.so
/build/mato/GAUDI/GAUDI_v21r10p1/InstallArea/x86_64-slc5-gcc43-opt/lib/libGaudiKernel.so
(0x00002afdec07d000)
libGenVector.so =>
/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00cp1_python2.5/x86_64-slc5-gcc43-dbg/root/lib/libGenVector.so
(0x00002afdec5bd000)
libgsl.so.0 =>
/afs/cern.ch/sw/lcg/external/GSL/1.10/x86_64-slc5-gcc43-opt/lib/libgsl.so.0
(0x00002afdecaa2000)
libstdc++.so.6 =>
/afs/cern.ch/sw/lcg/external/gcc/4.3/x86_64-slc5/lib64/libstdc++.so.6
(0x00002afdece81000)
libm.so.6 => /lib64/libm.so.6 (0x00002afded1a1000)
...
$ ldd
/build/mato/LHCB/LHCB_v31r4/InstallArea/x86_64-slc5-gcc43-opt/lib/libLHCbMathLib.so
/build/mato/GAUDI/GAUDI_v21r10p1/InstallArea/x86_64-slc5-gcc43-opt/lib/libGaudiKernel.so
(0x00002b6564776000)
libGenVector.so => not found
libgsl.so.0 => not found
libstdc++.so.6 =>
/afs/cern.ch/sw/lcg/external/gcc/4.3/x86_64-slc5/lib64/libstdc++.so.6
(0x00002b6564cd0000)
libm.so.6 => /lib64/libm.so.6 (0x00002b6564fd7000)
...
The "not found"s is normal since the CMake installation has removed the RPATH
information. However still remains the full path of the imported library
'libGaudiKernel.so'. The problem is that I cannot reproduce it with a small set
of projects. They behave as you have described, that is, the RPATH information
is present in the build tree and then is removed when installed. Do you have an
idea what this direct reference of the imported library is?
-------------------------------------------------------------
Pere Mato CERN, PH Department, CH 1211 Geneva 23, Switzerland
e-mail: [email protected] tel: +41 22 76 78696
fax: +41 22 76 68792 gsm: +41 76 48 70855
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake