natvis support in build system + some natvis

This commit is contained in:
Patedam committed 2026-09-18 18:23:49 -04:00
1 parent 2fd675cf11
commit 1367146503
5 files changed
+137 -6

No files matched your search

+35
View File
@@ -1221,6 +1221,14 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
CollectFiles(projectDir, NULL, ".inl", srcFiles);
}
FilePathList* natvisFiles = CreateFilePathList();
if (DirectoryExists("Natvis")) {
CollectFiles("Natvis", NULL, ".natvis", natvisFiles);
}
if (FileExists("External\\imgui\\misc\\debuggers\\imgui.natvis")) {
FilePathListAdd(natvisFiles, "External\\imgui\\misc\\debuggers\\imgui.natvis");
}
char* buf = (char*)ArenaPush(4 * 1024 * 1024);
int offset = 0;
@@ -1315,6 +1323,14 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
}
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " </ItemGroup>\n");
if (natvisFiles->Count > 0) {
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " <ItemGroup>\n");
for (int i = 0; i < natvisFiles->Count; i++) {
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " <Natvis Include=\"..\\%s\" />\n", natvisFiles->Paths[i]);
}
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " </ItemGroup>\n");
}
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
" <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n"
" <ImportGroup Label=\"ExtensionTargets\">\n"
@@ -1373,6 +1389,16 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
}
}
if (natvisFiles->Count > 0) {
bool found = false;
for (int f = 0; f < filterCount; f++) {
if (_stricmp(filters[f], "Natvis") == 0) { found = true; break; }
}
if (!found && filterCount < 512) {
strcpy_s(filters[filterCount++], 256, "Natvis");
}
}
char* filterBuf = (char*)ArenaPush(4 * 1024 * 1024);
int filterOffset = 0;
filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
@@ -1416,6 +1442,15 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
" <%s Include=\"..\\%s\" />\n", type, path);
}
}
if (natvisFiles->Count > 0) {
for (int i = 0; i < natvisFiles->Count; i++) {
filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
" <Natvis Include=\"..\\%s\">\n"
" <Filter>Natvis</Filter>\n"
" </Natvis>\n", natvisFiles->Paths[i]);
}
}
filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
" </ItemGroup>\n</Project>\n");