mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-04 04:40:56 -06:00
Merge topic 'msvc-embed-manifest-direct' into release-3.27
8a07bcc149 MSVC: Restore support for non-incremental linking without 'rc' in PATH
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8613
This commit is contained in:
@@ -2502,6 +2502,26 @@ int cmVSLink::LinkIncremental()
|
||||
|
||||
int cmVSLink::LinkNonIncremental()
|
||||
{
|
||||
// The MSVC link tool expects 'rc' to be in the PATH if it needs to embed
|
||||
// manifests, but the user might explicitly set 'CMAKE_RC_COMPILER' instead.
|
||||
// Add its location as a fallback at the end of PATH.
|
||||
if (cmSystemTools::FileIsFullPath(this->RcPath)) {
|
||||
std::string rcDir = cmSystemTools::GetFilenamePath(this->RcPath);
|
||||
#ifdef _WIN32
|
||||
std::replace(rcDir.begin(), rcDir.end(), '/', '\\');
|
||||
char const pathSep = ';';
|
||||
#else
|
||||
char const pathSep = ':';
|
||||
#endif
|
||||
cm::optional<std::string> path = cmSystemTools::GetEnvVar("PATH");
|
||||
if (path) {
|
||||
path = cmStrCat(*path, pathSep, rcDir);
|
||||
} else {
|
||||
path = rcDir;
|
||||
}
|
||||
cmSystemTools::PutEnv(cmStrCat("PATH=", *path));
|
||||
}
|
||||
|
||||
// Sort out any manifests.
|
||||
if (this->LinkGeneratesManifest || !this->UserManifests.empty()) {
|
||||
std::string opt =
|
||||
|
||||
Reference in New Issue
Block a user