Skip to content

Commit 39ae187

Browse files
committed
Support RC files.
Fixes #52
1 parent e2afcd6 commit 39ae187

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

include/projectGenerator.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class ProjectGenerator
3838
StaticList m_includesC;
3939
StaticList m_includesASM;
4040
StaticList m_includesH;
41+
StaticList m_includesRC;
4142
StaticList m_includesCU;
4243
UnknownList m_replaceIncludes;
4344
StaticList m_libs;
@@ -275,7 +276,7 @@ class ProjectGenerator
275276
bool createReplaceFiles(const StaticList& replaceIncludes, StaticList& existingIncludes);
276277

277278
bool findProjectFiles(const StaticList& includes, StaticList& includesC, StaticList& includesCPP,
278-
StaticList& includesASM, StaticList& includesH, StaticList& includesCU) const;
279+
StaticList& includesASM, StaticList& includesH, StaticList& includesRC, StaticList& includesCU) const;
279280

280281
/**
281282
* Replace occurrences of known tags in string.

source/projectGenerator.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@ void ProjectGenerator::outputProjectCleanup()
415415
m_includesC.clear();
416416
m_includesASM.clear();
417417
m_includesH.clear();
418+
m_includesRC.clear();
418419
m_includesCU.clear();
419420
m_libs.clear();
420421
m_unknowns.clear();
@@ -953,12 +954,15 @@ void ProjectGenerator::outputSourceFiles(string& projectTemplate, string& filter
953954
string resourceFile;
954955
if (findSourceFile(m_projectName.substr(3) + "res", ".rc", resourceFile)) {
955956
m_configHelper.makeFileProjectRelative(resourceFile, resourceFile);
956-
StaticList resources;
957-
resources.push_back(resourceFile);
958-
outputSourceFileType(resources, "ResourceCompile", "Resource", projectTemplate, filterTemplate, foundObjects,
959-
foundFilters, false, false, true);
957+
if (find(m_includesRC.begin(), m_includesRC.end(), resourceFile) == m_includesRC.end()) {
958+
m_includesRC.push_back(resourceFile);
959+
}
960960
}
961961

962+
// Ouptut RC files
963+
outputSourceFileType(m_includesRC, "ResourceCompile", "Resource", projectTemplate, filterTemplate, foundObjects,
964+
foundFilters, false, false, true);
965+
962966
// Output ASM files in specific item group (must go first as asm does not allow for custom obj filename)
963967
if (!m_includesASM.empty()) {
964968
if (m_configHelper.isASMEnabled()) {

source/projectGenerator_files.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ bool ProjectGenerator::checkProjectFiles()
9999
}
100100

101101
// Check the output Unknown Includes and find there corresponding file
102-
if (!findProjectFiles(m_includes, m_includesC, m_includesCPP, m_includesASM, m_includesH, m_includesCU)) {
102+
if (!findProjectFiles(
103+
m_includes, m_includesC, m_includesCPP, m_includesASM, m_includesH, m_includesRC, m_includesCU)) {
103104
return false;
104105
}
105106

@@ -113,8 +114,8 @@ bool ProjectGenerator::checkProjectFiles()
113114
for (auto& include : m_replaceIncludes) {
114115
replaceIncludes.push_back(include.first);
115116
}
116-
if (!findProjectFiles(
117-
replaceIncludes, replaceCIncludes, replaceCPPIncludes, replaceASMIncludes, m_includesH, m_includesCU)) {
117+
if (!findProjectFiles(replaceIncludes, replaceCIncludes, replaceCPPIncludes, replaceASMIncludes, m_includesH,
118+
m_includesRC, m_includesCU)) {
118119
return false;
119120
}
120121
// Need to create local files for any replace objects
@@ -201,7 +202,7 @@ bool ProjectGenerator::createReplaceFiles(const StaticList& replaceIncludes, Sta
201202
}
202203

203204
bool ProjectGenerator::findProjectFiles(const StaticList& includes, StaticList& includesC, StaticList& includesCPP,
204-
StaticList& includesASM, StaticList& includesH, StaticList& includesCU) const
205+
StaticList& includesASM, StaticList& includesH, StaticList& includesRC, StaticList& includesCU) const
205206
{
206207
for (const auto& include : includes) {
207208
string retFileName;
@@ -237,6 +238,14 @@ bool ProjectGenerator::findProjectFiles(const StaticList& includes, StaticList&
237238
continue;
238239
}
239240
includesH.push_back(retFileName);
241+
} else if (findSourceFile(include, ".rc", retFileName)) {
242+
// Found a H File to include
243+
m_configHelper.makeFileProjectRelative(retFileName, retFileName);
244+
if (find(includesRC.begin(), includesRC.end(), retFileName) != includesRC.end()) {
245+
// skip this item
246+
continue;
247+
}
248+
includesRC.push_back(retFileName);
240249
} else if (include.find(".ptx") != string::npos) {
241250
// Found a CUDA file
242251
string fileName = include.substr(0, include.find(".ptx"));

0 commit comments

Comments
 (0)