Пример #1
0
        public PBXGroup AddGroup(PBXGroup parent, string name)
        {
            var result = new PBXGroup(name);

            parent.AddChild(result);
            groups.Add(result);
            return(result);
        }
Пример #2
0
        PBXBuildFile AddFile(string path, string tree, PBXGroup grp)
        {
            var fileref   = new PBXFileReference(path, tree);
            var buildfile = new PBXBuildFile(fileref);

            files.Add(fileref);
            grp.AddChild(fileref);
            sources.Add(buildfile);

            return(buildfile);
        }
Пример #3
0
        public void AddResource(string path, PBXGroup grp = null)
        {
            string       dir = Path.GetDirectoryName(path);
            PBXBuildFile buildFile;

            if (dir.EndsWith(".lproj"))
            {
                string          name    = Path.GetFileName(path);
                PBXVariantGroup variant = GetGroup(name) as PBXVariantGroup;

                if (variant == null)
                {
                    variant = new PBXVariantGroup(name);
                    groups.Add(variant);

                    if (grp == null)
                    {
                        projectGroup.AddChild(variant);
                    }
                    else
                    {
                        grp.AddChild(variant);
                    }

                    buildFile = new PBXBuildFile(variant);
                    resourcesBuildPhase.AddResource(buildFile);
                }

                string lang = dir.Substring(0, dir.LastIndexOf('.'));
                project.KnownRegions.Add(lang);

                var fileref = new PBXFileReference(path, "\"<group>\"");
                variant.AddChild(fileref);
                files.Add(fileref);
            }
            else
            {
                if (grp == null)
                {
                    grp = CreateGroupFromPath(path);
                }

                buildFile = AddFile(path, "\"<group>\"", grp);
                resourcesBuildPhase.AddResource(buildFile);
            }
        }
Пример #4
0
        PBXBuildFile AddFile(string path, string tree, PBXGroup grp = null)
        {
            var fileref   = new PBXFileReference(path, tree);
            var buildfile = new PBXBuildFile(fileref);

            files.Add(fileref);
            sources.Add(buildfile);
            if (grp == null)
            {
                grp = projectGroup;

                var parts = path.Split(new [] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < parts.Length - 1; i++)
                {
                    grp = (PBXGroup)(grp.GetGroup(parts [i]) ?? AddGroup(grp, parts [i]));
                }
            }

            grp.AddChild(fileref);

            return(buildfile);
        }
Пример #5
0
		public XcodeProject (string name, string sdkRoot, string configName)
		{
			this.name = name;

			frameworksGroup = new PBXGroup ("Frameworks", XcodeObjectSortDirection.Descending);
			mainGroup = new PBXGroup (null, XcodeObjectSortDirection.None);
			productsGroup = new PBXGroup ("Products");
			projectGroup = new PBXGroup (name);
			
			this.frameworksBuildPhase = new PBXFrameworksBuildPhase ();
			this.resourcesBuildPhase = new PBXResourcesBuildPhase ();
			this.sourcesBuildPhase = new PBXSourcesBuildPhase ();
			this.files = new List<PBXFileReference> ();
			this.sources = new List<PBXBuildFile> ();
			this.groups = new List<PBXGroup> ();
			
			this.groups.Add (mainGroup);
			this.groups.Add (productsGroup);
			this.groups.Add (frameworksGroup);
			this.groups.Add (projectGroup);

			mainGroup.AddChild (projectGroup);
			mainGroup.AddChild (frameworksGroup);
			mainGroup.AddChild (productsGroup);
			
			this.target = new PBXFileReference (string.Format ("{0}.app", name), "BUILT_PRODUCTS_DIR");
			productsGroup.AddChild (this.target);
			
			this.nativeConfigurationList = new XCConfigurationList ();
			this.projectConfigurationList = new XCConfigurationList ();
			this.nativeBuildConfiguration = new XCBuildConfiguration (configName);
			this.projectBuildConfiguration = new XCBuildConfiguration (configName);
			this.nativeTarget = new PBXNativeTarget (name, nativeConfigurationList, target);
			this.project = new PBXProject (name, projectConfigurationList, mainGroup, productsGroup);

			projectBuildConfiguration.AddSetting ("ALWAYS_SEARCH_USER_PATHS", "NO");
			projectBuildConfiguration.AddSetting ("ARCHS", "\"$(ARCHS_STANDARD_32_BIT)\"");
			//projectBuildConfiguration.AddSetting ("\"CODE_SIGN_IDENTITY[sdk=" + sdkRoot + "*]\"", "\"IPhone Developer\"");
			projectBuildConfiguration.AddSetting ("COPY_PHASE_STRIP", "NO");
			projectBuildConfiguration.AddSetting ("GCC_C_LANGUAGE_STANDARD", "gnu99");
			projectBuildConfiguration.AddSetting ("GCC_DYNAMIC_NO_PIC", "NO");
			projectBuildConfiguration.AddSetting ("GCC_OPTIMIZATION_LEVEL", "0");
			//projectBuildConfiguration.AddSetting ("GCC_PREPROCESSOR_DEFINITIONS", "(\"DEBUG=1\", \"$(inherited)\", )");
			projectBuildConfiguration.AddSetting ("GCC_SYMBOLS_PRIVATE_EXTERN", "NO");
			projectBuildConfiguration.AddSetting ("GCC_VERSION", "com.apple.compilers.llvm.clang.1_0");
			projectBuildConfiguration.AddSetting ("GCC_WARN_ABOUT_MISSING_PROTOTYPES", "YES");
			projectBuildConfiguration.AddSetting ("GCC_WARN_ABOUT_RETURN_TYPE", "YES");
			projectBuildConfiguration.AddSetting ("GCC_WARN_UNUSED_VARIABLE", "YES");
			//projectBuildConfiguration.AddSetting ("IPHONEOS_DEPLOYMENT_TARGET", "5.0");
			projectBuildConfiguration.AddSetting ("OTHER_CFLAGS", "\"\"");
			projectBuildConfiguration.AddSetting ("OTHER_LDFLAGS", "\"\"");
			projectBuildConfiguration.AddSetting ("SDKROOT", sdkRoot);

			this.projectConfigurationList.AddBuildConfiguration (projectBuildConfiguration);

			nativeBuildConfiguration.AddSetting ("GCC_PRECOMPILE_PREFIX_HEADER", "NO");
			//nativeBuildConfiguration.AddSetting ("INFOPLIST_FILE", "\"Info.plist\"");
			nativeBuildConfiguration.AddSetting ("PRODUCT_NAME", name);
			nativeBuildConfiguration.AddSetting ("WRAPPER_EXTENSION", "app");

			this.nativeConfigurationList.AddBuildConfiguration (nativeBuildConfiguration);

			this.nativeTarget.AddBuildPhase (sourcesBuildPhase);
			this.nativeTarget.AddBuildPhase (frameworksBuildPhase);
			this.nativeTarget.AddBuildPhase (resourcesBuildPhase);

			this.files.Add (target);
			this.project.AddNativeTarget (nativeTarget);
		}
Пример #6
0
		public PBXGroup AddGroup (PBXGroup parent, string name)
		{
			var result = new PBXGroup (name);
			parent.AddChild (result);
			groups.Add (result);
			return result;
		}
Пример #7
0
		PBXBuildFile AddFile (string path, string tree, PBXGroup grp = null)
		{
			var fileref = new PBXFileReference (path, tree);
			var buildfile = new PBXBuildFile (fileref);

			files.Add (fileref);
			sources.Add (buildfile);
			if (grp == null) {
				grp = projectGroup;
				
				var parts = path.Split (new [] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries);
				for (int i = 0; i < parts.Length - 1; i ++)
					grp = (PBXGroup) (grp.GetGroup (parts [i]) ?? AddGroup (grp, parts [i]));
			}
			
			grp.AddChild (fileref);

			return buildfile;
		}
Пример #8
0
        public XcodeProject(string name, string sdkRoot, string configName)
        {
            this.name = name;

            frameworksGroup = new PBXGroup("Frameworks", XcodeObjectSortDirection.Descending);
            mainGroup       = new PBXGroup(null, XcodeObjectSortDirection.None);
            productsGroup   = new PBXGroup("Products");
            projectGroup    = new PBXGroup(name);

            this.frameworksBuildPhase = new PBXFrameworksBuildPhase();
            this.resourcesBuildPhase  = new PBXResourcesBuildPhase();
            this.sourcesBuildPhase    = new PBXSourcesBuildPhase();
            this.files   = new List <PBXFileReference> ();
            this.sources = new List <PBXBuildFile> ();
            this.groups  = new List <PBXGroup> ();

            this.groups.Add(mainGroup);
            this.groups.Add(productsGroup);
            this.groups.Add(frameworksGroup);
            this.groups.Add(projectGroup);

            mainGroup.AddChild(projectGroup);
            mainGroup.AddChild(frameworksGroup);
            mainGroup.AddChild(productsGroup);

            this.target = new PBXFileReference(string.Format("{0}.app", name), "BUILT_PRODUCTS_DIR");
            productsGroup.AddChild(this.target);

            this.nativeConfigurationList   = new XCConfigurationList();
            this.projectConfigurationList  = new XCConfigurationList();
            this.nativeBuildConfiguration  = new XCBuildConfiguration(configName);
            this.projectBuildConfiguration = new XCBuildConfiguration(configName);
            this.nativeTarget = new PBXNativeTarget(name, nativeConfigurationList, target);
            this.project      = new PBXProject(name, projectConfigurationList, mainGroup, productsGroup);

            projectBuildConfiguration.AddSetting("ALWAYS_SEARCH_USER_PATHS", "NO");
            projectBuildConfiguration.AddSetting("ARCHS", "\"$(ARCHS_STANDARD_32_BIT)\"");
            //projectBuildConfiguration.AddSetting ("\"CODE_SIGN_IDENTITY[sdk=" + sdkRoot + "*]\"", "\"IPhone Developer\"");
            projectBuildConfiguration.AddSetting("COPY_PHASE_STRIP", "NO");
            projectBuildConfiguration.AddSetting("GCC_C_LANGUAGE_STANDARD", "gnu99");
            projectBuildConfiguration.AddSetting("GCC_DYNAMIC_NO_PIC", "NO");
            projectBuildConfiguration.AddSetting("GCC_OPTIMIZATION_LEVEL", "0");
            //projectBuildConfiguration.AddSetting ("GCC_PREPROCESSOR_DEFINITIONS", "(\"DEBUG=1\", \"$(inherited)\", )");
            projectBuildConfiguration.AddSetting("GCC_SYMBOLS_PRIVATE_EXTERN", "NO");
            projectBuildConfiguration.AddSetting("GCC_VERSION", "com.apple.compilers.llvm.clang.1_0");
            projectBuildConfiguration.AddSetting("GCC_WARN_ABOUT_MISSING_PROTOTYPES", "YES");
            projectBuildConfiguration.AddSetting("GCC_WARN_ABOUT_RETURN_TYPE", "YES");
            projectBuildConfiguration.AddSetting("GCC_WARN_UNUSED_VARIABLE", "YES");
            //projectBuildConfiguration.AddSetting ("IPHONEOS_DEPLOYMENT_TARGET", "5.0");
            projectBuildConfiguration.AddSetting("OTHER_CFLAGS", "\"\"");
            projectBuildConfiguration.AddSetting("OTHER_LDFLAGS", "\"\"");
            projectBuildConfiguration.AddSetting("SDKROOT", sdkRoot);

            this.projectConfigurationList.AddBuildConfiguration(projectBuildConfiguration);

            nativeBuildConfiguration.AddSetting("GCC_PRECOMPILE_PREFIX_HEADER", "NO");
            //nativeBuildConfiguration.AddSetting ("INFOPLIST_FILE", "\"Info.plist\"");
            nativeBuildConfiguration.AddSetting("PRODUCT_NAME", name);
            nativeBuildConfiguration.AddSetting("WRAPPER_EXTENSION", "app");

            this.nativeConfigurationList.AddBuildConfiguration(nativeBuildConfiguration);

            this.nativeTarget.AddBuildPhase(sourcesBuildPhase);
            this.nativeTarget.AddBuildPhase(frameworksBuildPhase);
            this.nativeTarget.AddBuildPhase(resourcesBuildPhase);

            this.files.Add(target);
            this.project.AddNativeTarget(nativeTarget);
        }
Пример #9
0
		public void AddResource (string path, PBXGroup grp = null)
		{
			string dir = Path.GetDirectoryName (path);
			PBXBuildFile buildFile;
			
			if (dir.EndsWith (".lproj")) {
				string name = Path.GetFileName (path);
				PBXVariantGroup variant = GetGroup (name) as PBXVariantGroup;
				
				if (variant == null) {
					variant = new PBXVariantGroup (name);
					groups.Add (variant);
					
					if (grp == null)
						projectGroup.AddChild (variant);
					else
						grp.AddChild (variant);
					
					buildFile = new PBXBuildFile (variant);
					resourcesBuildPhase.AddResource (buildFile);
				}
				
				string lang = dir.Substring (0, dir.LastIndexOf ('.'));
				project.KnownRegions.Add (lang);
				
				var fileref = new PBXFileReference (path, "\"<group>\"");
				variant.AddChild (fileref);
				files.Add (fileref);
			} else {
				if (grp == null)
					grp = CreateGroupFromPath (path);
				
				buildFile = AddFile (path, "\"<group>\"", grp);
				resourcesBuildPhase.AddResource (buildFile);
			}
		}
Пример #10
0
		PBXBuildFile AddFile (string path, string tree, PBXGroup grp)
		{
			var fileref = new PBXFileReference (path, tree);
			var buildfile = new PBXBuildFile (fileref);
			
			files.Add (fileref);
			grp.AddChild (fileref);
			sources.Add (buildfile);
			
			return buildfile;
		}