Thank you On Tue, Sep 6, 2016 at 3:24 PM, Brad King <brad.k...@kitware.com> wrote: > On 09/06/2016 03:00 PM, Ben Keller wrote: >> The workaround we are using for this currently is to compile a >> modified version of cmake that appends the following cmake code below >> the get_filename_component stanza in <PROJECTS>Targets.cmake: >> >> if("${_IMPORT_PREFIX}" STREQUAL "/") >> set(_IMPORT_PREFIX "") >> endif() > > I would consider that a fix rather than a workaround. We don't know > the prefix that will be computed since this block is meant to make > the package relocatable. We do know that references to the prefix > are always followed by "/" so it is safe to leave it as an empty > string. > > Please post the patch. > > Thanks, > -Brad >
From ee8736abc1640065b83d6322e2765795b934966e Mon Sep 17 00:00:00 2001 From: Ben Keller <irods.ben.kel...@gmail.com> Date: Tue, 10 May 2016 11:44:40 -0400 Subject: [PATCH] Correct _IMPORT_PREFIX when CMAKE_INSTALL_PREFIX is "/"
When exporting from a project (with install(EXPORT ...)), the<PROJECT>Targets.cmake file contains logic for computing the _IMPORT_PREFIX. This _IMPORT_PREFIX is then used in the <PROJECT>Targets-<configuration>.cmake file to generate the IMPORTED_LOCATION_<uppercase-configuration>. The generation appears to be accomplished by unconditionally appending a "/" to _IMPORT_PREFIX before appending the rest of the path. If _IMPORT_PREFIX is "/", then the IMPORTED_LOCATION_<uppercase-configuration> properties all start with exactly two leading slashes ("//"). Exactly two leading slashes is apparently a special case in POSIX file paths, such that its interpretation is left up to the implementation. This means that changing the path prefix from "/" to "//" should not be allowed. Per Brad King, references to _IMPORT_PREFIX are always followed by a "/", so setting _IMPORT_PREFIX to "" if it is "/" should safely prevent the leading "//" issue. --- Source/cmExportInstallFileGenerator.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index ceba69a..9ee5739 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -122,7 +122,10 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) "PATH)\n"; dest = cmSystemTools::GetFilenamePath(dest); } - os << "\n"; + os << "if(\"${_IMPORT_PREFIX}\" STREQUAL \"/\")\n" + << " set(_IMPORT_PREFIX \"\")\n" + << "endif()\n" + << "\n"; } std::vector<std::string> missingTargets; -- 1.9.1
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake-developers