class MTBuild::StaticLibraryProject
This class is used to build static libraries. A static library has compilation and archival phases that produce a binary library package.
Public Class Methods
new(project_name, project_folder, &configuration_block)
click to toggle source
Calls superclass method
MTBuild::Project::new
# File lib/mtbuild/staticlibrary_project.rb, line 10 def initialize(project_name, project_folder, &configuration_block) @framework_configurations = [] @api_headers = [] super if @framework_configurations.count > 0 configure_framework_tasks end end
Public Instance Methods
add_api_headers(api_headers)
click to toggle source
Specifies API header locations
# File lib/mtbuild/staticlibrary_project.rb, line 25 def add_api_headers(api_headers) @api_headers += Utils.expand_folder_list(api_headers, @project_folder) end
build_framework_package(configuration_names)
click to toggle source
Provides a framework package target that builds a framework package with the specified configurations
# File lib/mtbuild/staticlibrary_project.rb, line 20 def build_framework_package(configuration_names) @framework_configurations += Utils.ensure_array(configuration_names) end
Private Instance Methods
configure_framework_tasks()
click to toggle source
# File lib/mtbuild/staticlibrary_project.rb, line 36 def configure_framework_tasks namespace @project_name do framework_task = OrganizedPackageTask.new("#{@project_name}", :noversion) do |t| t.need_tar_gz = true t.add_folders_to_folder("Headers", @api_headers) @framework_configurations.each do |framework_configuration| configuration_name = "#{@project_name}:#{framework_configuration}" configuration_task = Rake.application.lookup(configuration_name) fail "Unable to locate configuration: #{configuration_name}" if configuration_task.nil? fail "Configuration is not a library configuration: #{configuration_name}" unless configuration_task.respond_to? :library_files and configuration_task.respond_to? :configuration_headers t.add_files_to_folder("Libraries/#{framework_configuration}", configuration_task.library_files) t.add_folders_to_folder("Config/#{framework_configuration}", configuration_task.configuration_headers) unless configuration_task.configuration_headers.empty? end end framework_rakefile = File.join(framework_task.package_dir_path, "mtbuildfile.rb") file framework_rakefile do |f| fdir = File.dirname(framework_rakefile) mkdir_p(fdir) unless File.exist?(fdir) File.open(framework_rakefile, 'w') do |f| f.puts("framework_project :#{@project_name}, File.dirname(__FILE__) do |lib|") f.puts(" lib.add_api_headers 'Headers'") @framework_configurations.each do |framework_configuration| configuration_name = "#{@project_name}:#{framework_configuration}" configuration_task = Rake.application.lookup(configuration_name) f.puts(" lib.add_configuration :#{framework_configuration},") f.puts(" configuration_headers: ['Config/#{framework_configuration}'],") unless configuration_task.configuration_headers.empty? f.puts(" objects: ['Libraries/#{framework_configuration}/*']") end f.puts("end") end end @framework_configurations.each do |framework_configuration| Rake::Task[:"#{@project_name}:package"].prerequisites.insert(0, :"#{@project_name}:#{framework_configuration}") Rake::Task[:"#{@project_name}:package"].prerequisites.insert(0, framework_rakefile) end end end
create_configuration(configuration_name, configuration)
click to toggle source
Create a static library configuration
# File lib/mtbuild/staticlibrary_project.rb, line 32 def create_configuration(configuration_name, configuration) StaticLibraryConfiguration.new(self, effective_output_folder, configuration_name, configuration, @api_headers) end