[fix] 修复从导出xcode项目包含绝对路径导致传送到其他机器上编译时找不到路径的bug

main
walon 2023-06-23 16:19:58 +08:00
parent be113567ba
commit 4492449b73
1 changed files with 11 additions and 4 deletions

View File

@ -62,6 +62,11 @@ namespace HybridCLR.Editor
ModifyPBXProject(pathToBuiltProject, pbxprojFile, lumpFiles, extraSources, cflags); ModifyPBXProject(pathToBuiltProject, pbxprojFile, lumpFiles, extraSources, cflags);
} }
private static string GetRelativePathFromProj(string path)
{
return path.Substring(path.IndexOf("Libraries"));
}
private static void ModifyPBXProject(string pathToBuiltProject, string pbxprojFile, List<LumpFile> lumpFiles, List<string> extraFiles, List<string> cflags) private static void ModifyPBXProject(string pathToBuiltProject, string pbxprojFile, List<LumpFile> lumpFiles, List<string> extraFiles, List<string> cflags)
{ {
var proj = new PBXProject(); var proj = new PBXProject();
@ -80,14 +85,16 @@ namespace HybridCLR.Editor
foreach (var lumpFile in lumpFiles) foreach (var lumpFile in lumpFiles)
{ {
string projPathOfFile = $"Classes/Lumps/{Path.GetFileName(lumpFile.lumpFile)}"; string lumpFileName = Path.GetFileName(lumpFile.lumpFile);
string projPathOfFile = $"Classes/Lumps/{lumpFileName}";
string relativePathOfFile = GetRelativePathFromProj(lumpFile.lumpFile);
string lumpGuid = proj.FindFileGuidByProjectPath(projPathOfFile); string lumpGuid = proj.FindFileGuidByProjectPath(projPathOfFile);
if (!string.IsNullOrEmpty(lumpGuid)) if (!string.IsNullOrEmpty(lumpGuid))
{ {
proj.RemoveFileFromBuild(targetGUID, lumpGuid); proj.RemoveFileFromBuild(targetGUID, lumpGuid);
proj.RemoveFile(lumpGuid); proj.RemoveFile(lumpGuid);
} }
lumpGuid = proj.AddFile(lumpFile.lumpFile, projPathOfFile, PBXSourceTree.Source); lumpGuid = proj.AddFile(relativePathOfFile, projPathOfFile, PBXSourceTree.Source);
proj.AddFileToBuild(targetGUID, lumpGuid); proj.AddFileToBuild(targetGUID, lumpGuid);
} }
@ -101,7 +108,7 @@ namespace HybridCLR.Editor
proj.RemoveFile(extraFileGuid); proj.RemoveFile(extraFileGuid);
//Debug.LogWarning($"remove exist extra file:{projPathOfFile} guid:{extraFileGuid}"); //Debug.LogWarning($"remove exist extra file:{projPathOfFile} guid:{extraFileGuid}");
} }
var lumpGuid = proj.AddFile(extraFile, projPathOfFile, PBXSourceTree.Source); var lumpGuid = proj.AddFile(GetRelativePathFromProj(extraFile), projPathOfFile, PBXSourceTree.Source);
proj.AddFileToBuild(targetGUID, lumpGuid); proj.AddFileToBuild(targetGUID, lumpGuid);
} }
@ -182,7 +189,7 @@ namespace HybridCLR.Editor
var lumpFileContent = new List<string>(); var lumpFileContent = new List<string>();
foreach (var file in cppFiles) foreach (var file in cppFiles)
{ {
lumpFileContent.Add($"#include \"{file}\""); lumpFileContent.Add($"#include \"{GetRelativePathFromProj(file)}\"");
} }
File.WriteAllLines(lumpFile, lumpFileContent, Encoding.UTF8); File.WriteAllLines(lumpFile, lumpFileContent, Encoding.UTF8);
Debug.Log($"create lump file:{lumpFile}"); Debug.Log($"create lump file:{lumpFile}");