mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-08 14:50:10 -06:00
Support per-language library link flags
This changes the behaviour of the generators to use a per-language library search path flag. This is needed for multi-language projects with different compilers (e.g. cl + gfortran). Since the adjusted variable has been part of the user settings, we control this based on a policy. Fixes: #19307
This commit is contained in:
@@ -23,6 +23,8 @@ set(CMAKE_Swift_COMPILE_OPTIONS_TARGET "-target ")
|
||||
set(CMAKE_Swift_COMPILER_ARG1 -frontend)
|
||||
set(CMAKE_Swift_DEFINE_FLAG -D)
|
||||
set(CMAKE_Swift_FRAMEWORK_SEARCH_FLAG "-F ")
|
||||
set(CMAKE_Swift_LIBRARY_PATH_FLAG "-L ")
|
||||
set(CMAKE_Swift_LIBRARY_PATH_TERMINATOR "")
|
||||
set(CMAKE_Swift_LINKER_WRAPPER_FLAG "-Xlinker" " ")
|
||||
set(CMAKE_Swift_RESPONSE_FILE_LINK_FLAG @)
|
||||
|
||||
|
||||
@@ -1444,10 +1444,23 @@ void cmLocalGenerator::OutputLinkLibraries(
|
||||
|
||||
std::string linkLanguage = cli.GetLinkLanguage();
|
||||
|
||||
const std::string& libPathFlag =
|
||||
this->Makefile->GetRequiredDefinition("CMAKE_LIBRARY_PATH_FLAG");
|
||||
const std::string& libPathTerminator =
|
||||
this->Makefile->GetSafeDefinition("CMAKE_LIBRARY_PATH_TERMINATOR");
|
||||
std::string libPathFlag;
|
||||
if (const char* value = this->Makefile->GetDefinition(
|
||||
"CMAKE_" + cli.GetLinkLanguage() + "_LIBRARY_PATH_FLAG")) {
|
||||
libPathFlag = value;
|
||||
} else {
|
||||
libPathFlag =
|
||||
this->Makefile->GetRequiredDefinition("CMAKE_LIBRARY_PATH_FLAG");
|
||||
}
|
||||
|
||||
std::string libPathTerminator;
|
||||
if (const char* value = this->Makefile->GetDefinition(
|
||||
"CMAKE_" + cli.GetLinkLanguage() + "_LIBRARY_PATH_TERMINATOR")) {
|
||||
libPathTerminator = value;
|
||||
} else {
|
||||
libPathTerminator =
|
||||
this->Makefile->GetRequiredDefinition("CMAKE_LIBRARY_PATH_TERMINATOR");
|
||||
}
|
||||
|
||||
// Add standard libraries for this language.
|
||||
std::string standardLibsVar = "CMAKE_";
|
||||
|
||||
Reference in New Issue
Block a user