mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-14 10:19:56 -06:00
install: Fix computed import prefix in export files when it is "/"
When exporting from a project (with install(EXPORT ...)), the
`<PROJECT>Targets.cmake` file contains logic for computing the
`_IMPORT_PREFIX` from its own location. This `_IMPORT_PREFIX` is then
used in the `<PROJECT>Targets-<config>.cmake` file to generate the
`IMPORTED_LOCATION_<CONFIG>`. The generation unconditionally appends a
"/" to `_IMPORT_PREFIX` before appending the rest of the path. If
`_IMPORT_PREFIX` is "/", then the `IMPORTED_LOCATION_<CONFIG>`
properties all start with exactly two leading slashes ("//").
Exactly two leading slashes is 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.
Since references to `_IMPORT_PREFIX` are always followed by a "/",
simply check the value to replace "/" with "".
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user