Thank you
On Tue, Sep 6, 2016 at 3:24 PM, Brad King <[email protected]> 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 <[email protected]>
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