BUG: fix for bug 5455, handle nodefaultlib with more than one lib
This commit is contained in:
parent
6d7ca9f9d4
commit
246e964180
@ -365,7 +365,7 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorLinkFlagTable[] =
|
|||||||
{"LinkIncremental", "INCREMENTAL:NO", "link incremental", "1", 0},
|
{"LinkIncremental", "INCREMENTAL:NO", "link incremental", "1", 0},
|
||||||
{"LinkIncremental", "INCREMENTAL:YES", "link incremental", "2", 0},
|
{"LinkIncremental", "INCREMENTAL:YES", "link incremental", "2", 0},
|
||||||
{"IgnoreDefaultLibraryNames", "NODEFAULTLIB:", "default libs to ignore", "",
|
{"IgnoreDefaultLibraryNames", "NODEFAULTLIB:", "default libs to ignore", "",
|
||||||
cmVS7FlagTable::UserValue},
|
cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable},
|
||||||
{"IgnoreAllDefaultLibraries", "NODEFAULTLIB", "ignore all default libs",
|
{"IgnoreAllDefaultLibraries", "NODEFAULTLIB", "ignore all default libs",
|
||||||
"TRUE", 0},
|
"TRUE", 0},
|
||||||
{"ModuleDefinitionFile", "DEF:", "add an export def file", "",
|
{"ModuleDefinitionFile", "DEF:", "add an export def file", "",
|
||||||
@ -1807,6 +1807,23 @@ cmLocalVisualStudio7GeneratorOptions
|
|||||||
// Ignore the user-specified value.
|
// Ignore the user-specified value.
|
||||||
this->FlagMap[entry->IDEName] = entry->value;
|
this->FlagMap[entry->IDEName] = entry->value;
|
||||||
}
|
}
|
||||||
|
else if(entry->special & cmVS7FlagTable::SemicolonAppendable)
|
||||||
|
{
|
||||||
|
const char *new_value = flag+1+n;
|
||||||
|
|
||||||
|
std::map<cmStdString,cmStdString>::iterator itr;
|
||||||
|
itr = this->FlagMap.find(entry->IDEName);
|
||||||
|
if(itr != this->FlagMap.end())
|
||||||
|
{
|
||||||
|
// Append to old value (if present) with semicolons;
|
||||||
|
itr->second += ";";
|
||||||
|
itr->second += new_value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->FlagMap[entry->IDEName] = new_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Use the user-specified value.
|
// Use the user-specified value.
|
||||||
|
@ -137,6 +137,10 @@ struct cmVS7FlagTable
|
|||||||
UserIgnored = (1<<1), // ignore any user value
|
UserIgnored = (1<<1), // ignore any user value
|
||||||
UserRequired = (1<<2), // match only when user value is non-empty
|
UserRequired = (1<<2), // match only when user value is non-empty
|
||||||
Continue = (1<<3), // continue looking for matching entries
|
Continue = (1<<3), // continue looking for matching entries
|
||||||
|
SemicolonAppendable = (1<<4), // a flag that if specified multiple times
|
||||||
|
// should have its value appended to the
|
||||||
|
// old value with semicolons (e.g.
|
||||||
|
// /NODEFAULTLIB: => IgnoreDefaultLibraryNames)
|
||||||
|
|
||||||
UserValueIgnored = UserValue | UserIgnored,
|
UserValueIgnored = UserValue | UserIgnored,
|
||||||
UserValueRequired = UserValue | UserRequired
|
UserValueRequired = UserValue | UserRequired
|
||||||
|
@ -6,6 +6,9 @@ add_library(testc1 STATIC libc1.c)
|
|||||||
add_library(testc2 SHARED libc2.c)
|
add_library(testc2 SHARED libc2.c)
|
||||||
add_executable (COnly conly.c foo.c foo.h)
|
add_executable (COnly conly.c foo.c foo.h)
|
||||||
target_link_libraries(COnly testc1 testc2)
|
target_link_libraries(COnly testc1 testc2)
|
||||||
|
if(MSVC_VERSION)
|
||||||
|
set_target_properties(COnly PROPERTIES
|
||||||
|
LINK_FLAGS " /NODEFAULTLIB:\"libc.lib\" /NODEFAULTLIB:\"libcmt.lib\" /NODEFAULTLIB:\"msvcrt.lib\" /NODEFAULTLIB:\"libcd.lib\" /NODEFAULTLIB:\"libcmtd.lib\"")
|
||||||
|
endif(MSVC_VERSION)
|
||||||
string(ASCII 35 32 67 77 97 107 101 ASCII_STRING)
|
string(ASCII 35 32 67 77 97 107 101 ASCII_STRING)
|
||||||
message(STATUS "String: ${ASCII_STRING}")
|
message(STATUS "String: ${ASCII_STRING}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user