commit
8fc88b7eb0
|
@ -98,11 +98,14 @@ macro(__windows_compiler_intel lang)
|
|||
set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/DNDEBUG /MD /Zi /O2")
|
||||
|
||||
if(_INTEL_COMPILER_SUPPORTS_MANIFEST)
|
||||
if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||
set(NO_RSP_EXPAND _no_rsp_expand)
|
||||
endif()
|
||||
set(CMAKE_${lang}_LINK_EXECUTABLE
|
||||
"<CMAKE_COMMAND> -E vs_link_exe ${CMAKE_${lang}_LINK_EXECUTABLE}")
|
||||
"<CMAKE_COMMAND> -E vs_link_exe${NO_RSP_EXPAND} ${CMAKE_${lang}_LINK_EXECUTABLE}")
|
||||
set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
|
||||
"<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_${lang}_CREATE_SHARED_LIBRARY}")
|
||||
"<CMAKE_COMMAND> -E vs_link_dll${NO_RSP_EXPAND} ${CMAKE_${lang}_CREATE_SHARED_LIBRARY}")
|
||||
set(CMAKE_${lang}_CREATE_SHARED_MODULE
|
||||
"<CMAKE_COMMAND> -E vs_link_dll ${CMAKE_${lang}_CREATE_SHARED_MODULE}")
|
||||
"<CMAKE_COMMAND> -E vs_link_dll${NO_RSP_EXPAND} ${CMAKE_${lang}_CREATE_SHARED_MODULE}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -212,8 +212,11 @@ set (CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL_INIT ${CMAKE_EXE_LINKER_FLAGS_MINSIZER
|
|||
macro(__windows_compiler_msvc lang)
|
||||
if(NOT "${CMAKE_${lang}_COMPILER_VERSION}" VERSION_LESS 14)
|
||||
# for 2005 make sure the manifest is put in the dll with mt
|
||||
set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll ")
|
||||
set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe ")
|
||||
if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||
set(NO_RSP_EXPAND _no_rsp_expand)
|
||||
endif()
|
||||
set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll${NO_RSP_EXPAND} ")
|
||||
set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe${NO_RSP_EXPAND} ")
|
||||
endif()
|
||||
set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
|
||||
"${_CMAKE_VS_LINK_DLL}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_FLAGS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
|
||||
|
|
|
@ -1682,11 +1682,19 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
|
|||
}
|
||||
else if (args[1] == "vs_link_exe")
|
||||
{
|
||||
return cmake::VisualStudioLink(args, 1);
|
||||
return cmake::VisualStudioLink(args, 1, false);
|
||||
}
|
||||
else if (args[1] == "vs_link_dll")
|
||||
{
|
||||
return cmake::VisualStudioLink(args, 2);
|
||||
return cmake::VisualStudioLink(args, 2, false);
|
||||
}
|
||||
else if (args[1] == "vs_link_exe_no_rsp_expand")
|
||||
{
|
||||
return cmake::VisualStudioLink(args, 1, true);
|
||||
}
|
||||
else if (args[1] == "vs_link_dll_no_rsp_expand")
|
||||
{
|
||||
return cmake::VisualStudioLink(args, 2, true);
|
||||
}
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
// Internal CMake color makefile support.
|
||||
|
@ -4012,7 +4020,8 @@ static bool cmakeCheckStampList(const char* stampList)
|
|||
// For visual studio 2005 and newer manifest files need to be embeded into
|
||||
// exe and dll's. This code does that in such a way that incremental linking
|
||||
// still works.
|
||||
int cmake::VisualStudioLink(std::vector<std::string>& args, int type)
|
||||
int cmake::VisualStudioLink(std::vector<std::string>& args, int type,
|
||||
bool no_rsp_expand)
|
||||
{
|
||||
if(args.size() < 2)
|
||||
{
|
||||
|
@ -4027,13 +4036,12 @@ int cmake::VisualStudioLink(std::vector<std::string>& args, int type)
|
|||
for(std::vector<std::string>::iterator i = args.begin();
|
||||
i != args.end(); ++i)
|
||||
{
|
||||
// check for nmake temporary files
|
||||
if((*i)[0] == '@' && i->find("@CMakeFiles") != 0 )
|
||||
// check for nmake temporary files (there are two rsp files)
|
||||
if(!no_rsp_expand && (*i)[0] == '@' && i->find("@CMakeFiles") != 0 )
|
||||
{
|
||||
std::ifstream fin(i->substr(1).c_str());
|
||||
std::string line;
|
||||
while(cmSystemTools::GetLineFromStream(fin,
|
||||
line))
|
||||
while(cmSystemTools::GetLineFromStream(fin, line))
|
||||
{
|
||||
cmSystemTools::ParseWindowsCommandLine(line.c_str(), expandedArgs);
|
||||
}
|
||||
|
|
|
@ -447,7 +447,8 @@ protected:
|
|||
std::string const& link);
|
||||
static int ExecuteEchoColor(std::vector<std::string>& args);
|
||||
static int ExecuteLinkScript(std::vector<std::string>& args);
|
||||
static int VisualStudioLink(std::vector<std::string>& args, int type);
|
||||
static int VisualStudioLink(std::vector<std::string>& args, int type,
|
||||
bool no_rsp_expand);
|
||||
static int VisualStudioLinkIncremental(std::vector<std::string>& args,
|
||||
int type,
|
||||
bool verbose);
|
||||
|
|
Loading…
Reference in New Issue