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