CREATE_PROJECT: Fix Visual Studio linking problems after Munt merge

This commit is contained in:
Paul Gilbert 2016-12-17 15:12:52 -05:00
parent 1194341b69
commit bbef10c068
3 changed files with 11 additions and 4 deletions

View file

@ -1527,7 +1527,8 @@ void ProjectProvider::addFilesToProject(const std::string &dir, std::ofstream &p
StringList duplicate;
for (StringList::const_iterator i = includeList.begin(); i != includeList.end(); ++i) {
const std::string fileName = getLastPathComponent(*i);
std::string fileName = getLastPathComponent(*i);
std::transform(fileName.begin(), fileName.end(), fileName.begin(), tolower);
// Leave out non object file names.
if (fileName.size() < 2 || fileName.compare(fileName.size() - 2, 2, ".o"))
@ -1540,7 +1541,9 @@ void ProjectProvider::addFilesToProject(const std::string &dir, std::ofstream &p
// Search for duplicates
StringList::const_iterator j = i; ++j;
for (; j != includeList.end(); ++j) {
if (fileName == getLastPathComponent(*j)) {
std::string candidateFileName = getLastPathComponent(*j);
std::transform(candidateFileName.begin(), candidateFileName.end(), candidateFileName.begin(), tolower);
if (fileName == candidateFileName) {
duplicate.push_back(fileName);
break;
}

View file

@ -514,7 +514,9 @@ void MSBuildProvider::writeFileListToProject(const FileNode &dir, std::ofstream
if (!_compileFiles.empty()) {
projectFile << "\t<ItemGroup>\n";
for (std::list<FileEntry>::const_iterator entry = _compileFiles.begin(); entry != _compileFiles.end(); ++entry) {
const bool isDuplicate = (std::find(duplicate.begin(), duplicate.end(), (*entry).name + ".o") != duplicate.end());
std::string fileName = (*entry).name + ".o";
std::transform(fileName.begin(), fileName.end(), fileName.begin(), tolower);
const bool isDuplicate = (std::find(duplicate.begin(), duplicate.end(), fileName) != duplicate.end());
// Deal with duplicated file names
if (isDuplicate) {

View file

@ -338,7 +338,9 @@ void VisualStudioProvider::writeFileListToProject(const FileNode &dir, std::ofst
if (producesObjectFile(node->name)) {
std::string name, ext;
splitFilename(node->name, name, ext);
const bool isDuplicate = (std::find(duplicate.begin(), duplicate.end(), name + ".o") != duplicate.end());
name += ".o";
std::transform(name.begin(), name.end(), name.begin(), tolower);
const bool isDuplicate = (std::find(duplicate.begin(), duplicate.end(), name) != duplicate.end());
if (ext == "asm") {
std::string objFileName = "$(IntDir)\\";