class Cxxproject::StaticLibrary
Attributes
whole_archive[R]
Public Class Methods
new(name, whole_archive=false)
click to toggle source
Calls superclass method
Cxxproject::BuildingBlock::new
# File lib/cxxproject/buildingblocks/static_library.rb, line 16 def initialize(name, whole_archive=false) super(name) @whole_archive = whole_archive end
Public Instance Methods
add_grouping_tasks(archive)
click to toggle source
# File lib/cxxproject/buildingblocks/static_library.rb, line 121 def add_grouping_tasks(archive) namespace 'lib' do desc archive task @name => archive end end
additional_path_components()
click to toggle source
# File lib/cxxproject/buildingblocks/static_library.rb, line 31 def additional_path_components ['libs'] end
calc_archive_name()
click to toggle source
# File lib/cxxproject/buildingblocks/static_library.rb, line 75 def calc_archive_name aname = get_archive_name # if @output_dir_abs # prefix = File.rel_from_to_project(@project_dir, @output_dir) # aname = aname[prefix.length..-1] # end return aname end
calc_command_line()
click to toggle source
# File lib/cxxproject/buildingblocks/static_library.rb, line 61 def calc_command_line objs = @objects if @output_dir_abs prefix = File.rel_from_to_project(@project_dir, @output_dir) # objs.map! { |m| m[prefix.length..-1] } end archiver = @tcs[:ARCHIVER] cmd = [archiver[:COMMAND]] # ar cmd += archiver[:ARCHIVE_FLAGS].split(" ") cmd += archiver[:FLAGS] cmd << calc_archive_name # -o debug/x.exe cmd += objs end
complete_init()
click to toggle source
Calls superclass method
Cxxproject::BuildingBlock#complete_init
# File lib/cxxproject/buildingblocks/static_library.rb, line 21 def complete_init() if @output_dir_abs add_lib_element(HasLibraries::LIB, @name, true) add_lib_element(HasLibraries::SEARCH_PATH, File.join(@output_dir, 'libs'), true) else add_lib_element(HasLibraries::LIB_WITH_PATH, File.join(@output_dir,"lib#{@name}.a"), true) end super end
convert_to_rake()
click to toggle source
task that will link the given object files to a static lib
# File lib/cxxproject/buildingblocks/static_library.rb, line 86 def convert_to_rake() object_multitask = prepare_tasks_for_objects() archiver = @tcs[:ARCHIVER] res = typed_file_task Rake::Task::LIBRARY, get_task_name => object_multitask do cmd = calc_command_line aname = calc_archive_name Dir.chdir(@project_dir) do FileUtils.rm(aname) if File.exists?(aname) # cmd.map! {|c| c.include?(' ') ? "\"#{c}\"" : c } rd, wr = IO.pipe cmd << { :err => wr, :out => wr } sp = spawn(*cmd) cmd.pop consoleOutput = ProcessHelper.readOutput(sp, rd, wr) process_result(cmd, consoleOutput, @tcs[:ARCHIVER][:ERROR_PARSER], "Creating #{aname}") check_config_file() end end res.tags = tags enhance_with_additional_files(res) add_output_dir_dependency(get_task_name, res, true) add_grouping_tasks(get_task_name) setup_rake_dependencies(res, object_multitask) return res end
get_archive_name()
click to toggle source
# File lib/cxxproject/buildingblocks/static_library.rb, line 35 def get_archive_name() # relative path return @archive_name if @archive_name parts = [@output_dir] if @output_dir_abs parts = [@output_dir_relPath] if @output_dir_relPath parts += additional_path_components() end parts << "lib#{@name}.a" @archive_name = File.join(parts) @archive_name end
get_task_name()
click to toggle source
# File lib/cxxproject/buildingblocks/static_library.rb, line 50 def get_task_name() # full path return @task_name if @task_name parts = [@output_dir] parts << 'libs' if @output_dir_abs parts << "lib#{@name}.a" @task_name = File.join(parts) @task_name = @project_dir + "/" + @task_name unless @output_dir_abs @task_name end