Example #1
0
        // Embeds Framework to the project.
        // Creates a copy phase called 'Embed Frameworks', adds 'filename' framework there and sets LD_RUNPATH_SEARCH_PATHS to "$(inherited) @executable_path/Frameworks
        public void EmbedFramework(string targetGuid, string fileGuid)
        {
            PBXNativeTargetData target = nativeTargets[targetGuid];

            PBXBuildFileData frameworkEmbedFileData = null;

            var embedFrameworkPhase = FindEmbedFrameworkPhase();

            if (embedFrameworkPhase == null)
            {
                embedFrameworkPhase = PBXCopyFilesBuildPhaseData.Create("Embed Frameworks", "10");
                copyFiles.AddEntry(embedFrameworkPhase);
                target.phases.AddGUID(embedFrameworkPhase.guid);
            }
            else
            {
                frameworkEmbedFileData = FindFrameworkByFileGuid(embedFrameworkPhase, fileGuid);
            }

            if (frameworkEmbedFileData == null)
            {
                frameworkEmbedFileData = PBXBuildFileData.CreateFromFile(fileGuid, false, null);
                frameworkEmbedFileData.codeSignOnCopy      = true;
                frameworkEmbedFileData.removeHeadersOnCopy = true;
                BuildFilesAdd(targetGuid, frameworkEmbedFileData);

                embedFrameworkPhase.files.AddGUID(frameworkEmbedFileData.guid);
            }

            frameworkEmbedFileData.AddCodeSignOnCopy();

            AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");
        }