class Rmk::Rcc

Qt's resource compiler (added automatically when using +'qt'+ package)

Attributes

auto_detect_files[RW]

extract +files automatically from qrc file

exclude_files_patters[RW]

patterns to exclude #files

files[RW]

#files mentioned in qrc file (dependencies)

rcc[RW]

rcc binary

Public Class Methods

new() click to toggle source
Calls superclass method Rmk::Processor.new
# File tools/rcc.rb, line 20
def initialize
  super

  @slot = SLOTS[:code_generator]
  @requires = [CXX]

  data = tool_params(:Rcc, generator.configuration)
  @flags.add(data[:flags])
  @rcc = data[:rcc]
  @files = []
  @auto_detect_files = data[:auto_detect_files] || true
  @exclude_files_patters = data[:exclude_files_patters] || []
end

Public Instance Methods

check_files(src) click to toggle source
# File tools/rcc.rb, line 91
def check_files(src)
  @files.map! do |name|
    if File.exist?(name)
      logger.debug("rcc: '#{src}' depends on '#{name}'")
      name
    else
      logger.warn "rcc: no file '#{name}' referenced in '#{src}'"
      nil
    end
  end.compact!
end
command() click to toggle source
# File tools/rcc.rb, line 34
def command
  '$rcc $rccflags -o $out $in'
end
exclude_file?(name) click to toggle source
# File tools/rcc.rb, line 87
def exclude_file?(name)
  @exclude_files_patters.find { |p| name =~ p }
end
find_files(qrcfile) click to toggle source
# File tools/rcc.rb, line 75
def find_files(qrcfile)
  logger.debug "rcc: scanning '#{qrcfile}'"
  f = IO.read(qrcfile).scan(/<file>\s*([^<]*)\s*<\/file>/)
        .map { |group| group[0] }
        .map do |name|
    name unless exclude_file?(name)
  end.compact

  @files += f
  @files = stable_unique(@files)
end
ninja_build(writer = generator.ninja) click to toggle source
# File tools/rcc.rb, line 57
def ninja_build(writer = generator.ninja)
  find_sources(source_pattern)
  @@log.debug "Qt::rcc sources = #{sources.join(' ')}"

  sources.each do |src|
    find_files(src)
    check_files(src)
    out = "$builddir/#{strip_extension(src) + '.rcc.cc'}"
    writer.build(generator.add_file(out), 'rcc',
                 generator.expand_source(src),
                 implicit: @files)
  end
end
ninja_rules(writer = generator.ninja) click to toggle source
# File tools/rcc.rb, line 52
def ninja_rules(writer = generator.ninja)
  writer.rule('rcc', command,
              description: 'Qt::rcc $out')
end
ninja_variables(writer = generator.ninja) click to toggle source
# File tools/rcc.rb, line 38
def ninja_variables(writer = generator.ninja)
  @rcc = begin
         (@@available_packages['qt'][:rcc] || @rcc)
       rescue StandardError
         @rcc
       end
  logger.debug "using rcc '#{@rcc}'" # which rcc

  writer.comment 'Qt::rcc'
  writer.variable('rcc', @rcc)
  writer.variable('rccflags', flags.text)
  writer.newline
end
source_pattern() click to toggle source
# File tools/rcc.rb, line 71
def source_pattern
  /\.qrc$/
end