[CMake] RPATH issue using ExternalProject_Add

Zach Mertens-McConnell zmertens at asu.edu
Mon Dec 5 13:42:18 EST 2016


I'm having an issue building a child project through my master project
where the child project is an "External Project" which is automatically
built using CMake's "ExternalProject_Add" feature if it is not found (using
"FindChildProject.cmake"). The error message happens during installing of
the child project after running my cmake and make command.

*cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..*

*make -j8*

*[  1%] Performing update step for 'ext_dawg'*
*[  2%] Performing configure step for 'ext_dawg'*
*-- Compiling with build type 'Release'.*
*--  version: 1.1.2-429-g56f23c7.*
*-- Boost version: 1.58.0*
*-- Found the following Boost libraries:*
*--   program_options*
*--   unit_test_framework*
*[ 89%] Built target phylogenyLib*
*-- Configuring done*
*-- Generating done*
*-- Build files have been written to:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build*
*[ 89%] Performing build step for 'ext_dawg'*
*[ 87%] Built target libdawg2-static*
*[ 87%] Built target libdawg2*
*[ 87%] Built target version*
*[100%] Built target dawg*
*[ 89%] Performing install step for 'ext_dawg'*
*[ 87%] Built target libdawg2*
*[ 87%] Built target libdawg2-static*
*[ 87%] Built target version*
*[100%] Built target dawg*
*Install the project...*
*-- Install configuration: "Release"*
*-- Up-to-date:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/doc/dawg-2/copying.txt*
*-- Up-to-date:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/doc/dawg-2/readme.txt*
*-- Up-to-date:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/doc/dawg-2/changelog.txt*
*-- Up-to-date:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/share/dawg-2/lambda.pl
<http://lambda.pl>*
*-- Up-to-date:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/share/dawg-2/outsplit.pl
<http://outsplit.pl>*
*-- Up-to-date:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/share/dawg-2/nexus2fasta.pl
<http://nexus2fasta.pl>*
*-- Up-to-date:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/share/dawg-2/varrep.pl
<http://varrep.pl>*
*-- Installing:
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/bin/dawg*
*CMake Error at src/cmake_install.cmake:45 (file):*
*  file RPATH_CHANGE could not write new RPATH:*

*
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/lib*

*  to the file:*

*
/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/bin/dawg*

*  No valid ELF RPATH or RUNPATH entry exists in the file;*
*Call Stack (most recent call first):*
*  cmake_install.cmake:64 (include)*

*Makefile:116: recipe for target 'install' failed*
*make[3]: *** [install] Error 1*
*CMakeFiles/ext_dawg.dir/build.make:74: recipe for target
'ext_deps/ext_dawg-stamp/ext_dawg-install' failed*
*make[2]: *** [ext_deps/ext_dawg-stamp/ext_dawg-install] Error 2*
*CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/ext_dawg.dir/all'
failed*
*make[1]: *** [CMakeFiles/ext_dawg.dir/all] Error 2*
*Makefile:127: recipe for target 'all' failed*
*make: *** [all] Error 2*

----------------------------------------------------------------------------------------------------------------------------

This child project can be built alone with no issues (it will install as
well), but it can't seem to be built as an external project due to the
RPATH error message above. Do I need to modify the RPATH settings from the
master project or how can I specify the order of installation such that the
libs are installed before the bin?

The static library, libdawg2.a, which is trying to be linked to the
executable in the error message above, is built in
"/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/src/lib",
but is installed to
"/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/lib"
where the executable in
"/home/hendrix/repo/spartaabc-personal/build/ext_deps/ext_dawg-build/bin"
needs to set it's RPATH.

And like I said I can build this child project alone, it's RPATH is set to
"<CMAKE_INSTALL_PREFIX>/lib" in it's respective CMakeLists.txt file.




-- 
Zach Mertens
zmertens at asu.edu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20161205/94702ec2/attachment.html>


More information about the CMake mailing list