MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / removeAllBuildProducts

Method removeAllBuildProducts

Libraries/Plugin/Plugin.cpp:1035–1074  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1033}
1034
1035SC::Result SC::PluginRegistry::removeAllBuildProducts(StringSpan identifier)
1036{
1037 PluginDynamicLibrary* res = findPlugin(identifier);
1038 SC_TRY(res != nullptr);
1039 PluginDynamicLibrary& lib = *res;
1040 StringPath buffer;
1041
1042#if SC_PLATFORM_WINDOWS
1043 SC_TRY(PluginString::assign(buffer, {lib.definition.directory.view(), SC_NATIVE_STR("/"), identifier, ".lib"}));
1044 SC_TRY(PluginFileSystem::removeFileAbsolute(buffer.view()));
1045 SC_TRY(PluginString::assign(buffer, {lib.definition.directory.view(), SC_NATIVE_STR("/"), identifier, ".exp"}));
1046 SC_TRY(PluginFileSystem::removeFileAbsolute(buffer.view()));
1047 SC_TRY(PluginString::assign(buffer, {lib.definition.directory.view(), SC_NATIVE_STR("/"), identifier, ".ilk"}));
1048 SC_TRY(PluginFileSystem::removeFileAbsolute(buffer.view()));
1049 SC_TRY(PluginString::assign(buffer, {lib.definition.directory.view(), SC_NATIVE_STR("/"), identifier, ".dll"}));
1050 int numTries = 10;
1051 while (not PluginFileSystem::removeFileAbsolute(buffer.view()))
1052 {
1053 ::Sleep(10); // It looks like FreeLibrary needs some time to avoid getting access denied
1054 numTries--;
1055 SC_TRY_MSG(numTries >= 0, "PluginRegistry: Cannot remove dll");
1056 }
1057#elif SC_PLATFORM_APPLE
1058 SC_TRY(PluginString::assign(buffer, {lib.definition.directory.view(), "/", identifier, ".dylib"}));
1059 SC_TRY(PluginFileSystem::removeFileAbsolute(buffer.view()));
1060#else
1061 SC_TRY(PluginString::assign(buffer, {lib.definition.directory.view(), "/", identifier, ".so"}));
1062 SC_TRY(PluginFileSystem::removeFileAbsolute(buffer.view()));
1063#endif
1064 for (auto& file : lib.definition.files)
1065 {
1066 StringSpan outputName = PluginString::basename(file.absolutePath.view(), SC_NATIVE_STR(".cpp"));
1067
1068 StringPath destFile;
1069 SC_TRY(PluginString::join(destFile, {lib.definition.directory.view(), outputName}));
1070 SC_TRY(destFile.append(".o"));
1071 SC_TRY(PluginFileSystem::removeFileAbsolute(destFile.view()));
1072 }
1073 return Result(true);
1074}

Callers 1

PluginTestMethod · 0.80

Calls 6

basenameFunction · 0.85
assignFunction · 0.50
joinFunction · 0.50
ResultClass · 0.50
viewMethod · 0.45
appendMethod · 0.45

Tested by 1

PluginTestMethod · 0.64