Skip to content

Instantly share code, notes, and snippets.

@niklasberglund
Forked from onevcat/add_lib_with_xcodeproj.rb
Created September 13, 2014 08:17
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save niklasberglund/129065e2612d00c811d0 to your computer and use it in GitHub Desktop.
Save niklasberglund/129065e2612d00c811d0 to your computer and use it in GitHub Desktop.
Example of how to use the ruby gem xcodeproj to add a library to the Frameworks group of a project. Forked and updated to work with updated version of xcodeproj.
require 'xcodeproj'
project_path = "your_project_path";
# Create project object
project = Xcodeproj::Project.new(project_path);
lib_path = "your_lib_path";
# Add the lib file as a reference
libRef = project['Frameworks'].new_file(lib_path);
# Get the build phase
framework_buildphase = project.objects.select{|x| x.class == Xcodeproj::Project::Object::PBXFrameworksBuildPhase}[0];
# Add it to the build phase
framework_buildphase.add_file_reference(libRef);
# Save the project
project.save();
@niklasberglund
Copy link
Author

Very relevant and useful documentation at: http://rubydoc.info/gems/xcodeproj/Xcodeproj/Project

@ndagrawal
Copy link

I am unable to get the PBXFrameworkBuildPhase all i get is the following classes.

Xcodeproj::Project::Object::PBXProject
Xcodeproj::Project::Object::PBXGroup
Xcodeproj::Project::Object::PBXGroup
Xcodeproj::Project::Object::XCConfigurationList
Xcodeproj::Project::Object::XCBuildConfiguration
Xcodeproj::Project::Object::XCBuildConfiguration
Xcodeproj::Project::Object::PBXGroup
Xcodeproj::Project::Object::PBXFileReference

Following is the code snipet

require 'xcodeproj'

project_path = "/Users/NileshAgrawal/Documents/ca-work/ios/ios-samples/ios-samples/MAAKitchenSink/MAAKitchenSink.xcodeproj";

Create project object

project = Xcodeproj::Project.new(project_path);

lib_path = "/Users/NileshAgrawal/Documents/ca-work/ios/ios-samples/ios-samples/MAAKitchenSink/libCAMobileAppAnalytics.a";

Add the lib file as a reference

libRef = project['Frameworks'].new_file(lib_path);

Get the build phase

framework_buildphase = project.objects.select{|x| x.class == Xcodeproj::Project::Object::PBXFrameworksBuildPhase}[0];

projectobjects.select { |x|
puts x.class
};

Add it to the build phase

framework_buildphase.add_file_reference(libRef);

Save the project

project.save_as(project_path);

@tennysondy
Copy link

hi, could you give an example to add "libz.tbd"

many thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment