Class: MxxRu::Cpp::LibCollectionTarget

Inherits:
CompositeTarget show all
Defined in:
lib/mxx_ru/cpp/lib_collection.rb

Overview

Collection of all required libraries form subprojects.

Since v.1.4.0

Constant Summary

Constants inherited from Target

Target::Global_obj_placement_info, Target::OPT_LOCAL, Target::OPT_UPSPREAD

Instance Attribute Summary

Attributes inherited from Target

#mxx_c_files, #mxx_cpp_files, #mxx_implib_path, #mxx_mswin_rc_file, #mxx_mswin_res_file, #mxx_obj_files, #mxx_optimization, #mxx_screen_mode, #mxx_sources_root, #mxx_target_ext, #mxx_target_name, #mxx_target_root

Attributes inherited from AbstractTarget

#mxx_full_targets_names, #mxx_generators, #mxx_required_prjs

Instance Method Summary collapse

Methods inherited from CompositeTarget

#clean, #reset

Methods inherited from Target

#c_source, #clean, #cpp_source, #create_full_src_file_name, #create_full_target_file_name, define_spreadable_option_methods, #global_obj_placement, global_option_methods, #implib_path, initialize_spreadable_option_instance_variables, #mswin_rc_file, #mswin_res_file, #mxx_obj_placement, #mxx_runtime_mode, #obj_file, #obj_placement, #optimization, #reset, #screen_mode, #sources_root, #target, #target_ext, #target_root, #toolset

Methods inherited from BinaryTarget

check_libraries_types, #lib, #lib_shared, #lib_static, #mxx_add_required_lib, #mxx_add_required_lib_path, #mxx_required_lib_paths, #mxx_required_libs

Methods inherited from AbstractTarget

#clean, define_plural_form_method, #generator, #mxx_add_full_target_name, #prj_alias, #required_prj, #reset, run

Constructor Details

#initialize(a_alias, &block) ⇒ LibCollectionTarget

Returns a new instance of LibCollectionTarget.



50
51
52
53
54
# File 'lib/mxx_ru/cpp/lib_collection.rb', line 50

def initialize( a_alias, &block )
  super( a_alias )

  instance_eval( &block ) if block
end

Instance Method Details

#buildObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/mxx_ru/cpp/lib_collection.rb', line 60

def build
  if nil == @mxx_last_build_result
    # Let base class makes all necessary building actions.
    super

    # We must collect names of all required libraries from
    # all subprojects.
    mxx_required_prjs.each do |d|
      if Toolset::has_linkable_dependecies?( d )
        mxx_add_required_libs( d.mxx_required_libs )
        mxx_add_required_lib_paths( d.mxx_required_lib_paths )
      end
    end
  end

  @mxx_last_build_result
end

#target_typeObject



56
57
58
# File 'lib/mxx_ru/cpp/lib_collection.rb', line 56

def target_type
  return LibCollectionTargetType.new
end