Exemple #1
0
		public void ApplyMod( XCMod mod )
		{	
			PBXGroup modGroup = this.GetGroup( mod.group );
			
			//Debug.Log( "Adding libraries..." );
			//PBXGroup librariesGroup = this.GetGroup( "Libraries" );
			foreach( XCModFile libRef in mod.libs ) {
				string completeLibPath = System.IO.Path.Combine( "usr/lib", libRef.filePath );
				this.AddFile( completeLibPath, modGroup, "SDKROOT", true, libRef.isWeak );
			}
			
			//Debug.Log( "Adding frameworks..." );
			PBXGroup frameworkGroup = this.GetGroup( "Frameworks" );
			foreach( string framework in mod.frameworks ) {
				string[] filename = framework.Split( ':' );
				bool isWeak = ( filename.Length > 1 ) ? true : false;
				string completePath = System.IO.Path.Combine( "System/Library/Frameworks", filename[0] );
				this.AddFile( completePath, frameworkGroup, "SDKROOT", true, isWeak );
			}
			
			//Debug.Log( "Adding files..." );
			foreach( string filePath in mod.files ) {
				string absoluteFilePath = System.IO.Path.Combine( mod.path, filePath );


				if( filePath.EndsWith(".framework") )
					this.AddFile( absoluteFilePath, frameworkGroup, "GROUP", true, false);
				else
					this.AddFile( absoluteFilePath, modGroup );
			}
			
			//Debug.Log( "Adding folders..." );
			foreach( string folderPath in mod.folders ) {
				string absoluteFolderPath = System.IO.Path.Combine( mod.path, folderPath );
				this.AddFolder( absoluteFolderPath, modGroup, (string[])mod.excludes.ToArray( typeof(string) ) );
			}
			
			//Debug.Log( "Adding headerpaths..." );
			foreach( string headerpath in mod.headerpaths ) {
				string absoluteHeaderPath = System.IO.Path.Combine( mod.path, headerpath );
				this.AddHeaderSearchPaths( absoluteHeaderPath );
			}

			//Debug.Log( "Configure build settings..." );
			Hashtable buildSettings = mod.buildSettings;
			if( buildSettings.ContainsKey("OTHER_LDFLAGS") )
			{
				Debug.Log( "    Adding other linker flags..." );
				ArrayList otherLinkerFlags = (ArrayList) buildSettings["OTHER_LDFLAGS"];
				foreach( string linker in otherLinkerFlags ) 
				{
					string _linker = linker;
					if( !_linker.StartsWith("-") )
						_linker = "-" + _linker;
					this.AddOtherLDFlags( _linker );
				}
			}

			if( buildSettings.ContainsKey("GCC_ENABLE_CPP_EXCEPTIONS") )
			{
				Debug.Log( "    GCC_ENABLE_CPP_EXCEPTIONS = " + buildSettings["GCC_ENABLE_CPP_EXCEPTIONS"] );
				this.GccEnableCppExceptions( (string) buildSettings["GCC_ENABLE_CPP_EXCEPTIONS"] );
			}

			if( buildSettings.ContainsKey("GCC_ENABLE_OBJC_EXCEPTIONS") )
			{
				Debug.Log( "    GCC_ENABLE_OBJC_EXCEPTIONS = " + buildSettings["GCC_ENABLE_OBJC_EXCEPTIONS"] );
				this.GccEnableObjCExceptions( (string) buildSettings["GCC_ENABLE_OBJC_EXCEPTIONS"] );
			}

			this.Consolidate();
		}
Exemple #2
0
//		#region Files
//
//
//		/// <summary>
//		/// Returns all file resources in the project, as an array of `XCSourceFile` objects.
//		/// </summary>
//		/// <returns>
//		/// The files.
//		/// </returns>
//		public ArrayList GetFiles()
//		{
//			return null;
//		}
//
//		/// <summary>
//		/// Returns the project file with the specified key, or nil.
//		/// </summary>
//		/// <returns>
//		/// The file with key.
//		/// </returns>
//		/// <param name='key'>
//		/// Key.
//		/// </param>
//		public XCSourceFile GetFileWithKey( string key )
//		{
//			return null;
//		}
//		
//		/// <summary>
//		/// Returns the project file with the specified name, or nil. If more than one project file matches the specified name,
//		/// which one is returned is undefined.
//		/// </summary>
//		/// <returns>
//		/// The file with name.
//		/// </returns>
//		/// <param name='name'>
//		/// Name.
//		/// </param>
//		public XCSourceFile GetFileWithName( string name )
//		{
//			return null;
//		}
//
//		/// <summary>
//		/// Returns all header files in the project, as an array of `XCSourceFile` objects.
//		/// </summary>
//		/// <returns>
//		/// The header files.
//		/// </returns>
//		public ArrayList GetHeaderFiles()
//		{
//			return null;
//		}
//
//		/**
//		* Returns all implementation obj-c implementation files in the project, as an array of `XCSourceFile` objects.
//		*/
//		public ArrayList GetObjectiveCFiles()
//		{
//			return null;
//		}
//
//		/**
//		* Returns all implementation obj-c++ implementation files in the project, as an array of `XCSourceFile` objects.
//		*/
//		public ArrayList GetObjectiveCPlusPlusFiles()
//		{
//			return null;
//		}
//
//		/**
//		* Returns all the xib files in the project, as an array of `XCSourceFile` objects.
//		*/
//		public ArrayList GetXibFiles()
//		{
//			return null;
//			
//		}
//
//		public ArrayList getImagePNGFiles()
//		{
//			return null;
//		}
//		
//		#endregion
//		#region Groups
//		/**
//		* Lists the groups in an xcode project, returning an array of `PBXGroup` objects.
//		*/
//		public PBXList groups {
//			get {
//				return null;
//			}
//		}
//		
//		/**
//		 * Returns the root (top-level) group.
//		 */
//		public PBXGroup rootGroup {
//			get {
//				return null;	
//			}
//		}
//		
//		/**
//		 * Returns the root (top-level) groups, if there are multiple. An array of rootGroup if there is only one.
//		 */
//		public ArrayList rootGroups {
//			get {
//				return null;	
//			}
//		}
//		
//		/**
//		* Returns the group with the given key, or nil.
//		*/
//		public PBXGroup GetGroupWithKey( string key )
//		{
//			return null;
//		}
//		
//		/**
//		 * Returns the group with the specified display name path - the directory relative to the root group. Eg Source/Main
//		 */
//		public PBXGroup GetGroupWithPathFromRoot( string path )
//		{
//			return null;
//		}
//		
//		/**
//		* Returns the parent group for the group or file with the given key;
//		*/
//		public PBXGroup GetGroupForGroupMemberWithKey( string key )
//		{
//			return null;
//		}
//		
//		/**
//		 * Returns the parent group for the group or file with the source file
//		 */
//		public PBXGroup GetGroupWithSourceFile( XCSourceFile sourceFile )
//		{
//			return null;
//		}
//		
//		#endregion
//		#region Target
//		
//		/**
//		* Lists the targets in an xcode project, returning an array of `XCTarget` objects.
//		*/
//		public ArrayList targets {
//			get {
//				return null;
//			}
//		}
//		
//		/**
//		* Returns the target with the specified name, or nil. 
//		*/
//		public XCTarget GetTargetWithName( string name )
//		{
//			return null;
//		}
//		
//		#endregion
//		#region Configurations
//		
//		/**
//		* Returns the target with the specified name, or nil. 
//		*/
//		public Dictionary<string, string> configurations {
//			get {
//				return null;
//			}
//		}
//			
//		public Dictionary<string, string> GetConfigurationWithName( string name )
//		{
//			return null;
//		}
//
//		public XCBuildConfigurationList defaultConfiguration {
//			get {
//				return null;
//			}
//		}
//		
//		#endregion
		#region Mods
		
		public void ApplyMod( string pbxmod )
		{
			XCMod mod = new XCMod( pbxmod );
			ApplyMod( mod );
		}