Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @pwd = Dir.pwd
- @package_list = []
- class DirInfo
- attr_accessor :x86d, :x86r, :x64d, :x64r
- def initialize()
- @x86d = []
- @x86r = []
- @x64d = []
- @x64r = []
- end
- end
- class Package
- attr_accessor :name, :include_list, :library_list, :depend_list, :library_info, :depend_info
- def initialize(name)
- @name = name
- @include_list = []
- @library_list = []
- @depend_list = []
- @library_info = DirInfo.new
- @depend_info = DirInfo.new
- end
- def empty?()
- @include_list.length == 0 &&
- @library_list.length == 0 &&
- @depend_list.length == 0
- end
- end
- def include_lib_or_dll(path)
- if File.file?(path)
- return false
- end
- count = 0
- Dir.open(path) do |dir|
- dir.each do |file|
- if file.end_with?(".lib") || file.end_with?(".dll")
- count += 1
- end
- end
- end
- count > 0
- end
- def find_dir(dest, packagePath)
- Dir.open(packagePath) do |dir|
- dir.each do |file|
- next if file == '.' || file == '..'
- path = packagePath + '/' + file
- if File.directory?(path)
- find_dir(dest, path)
- end
- if path.include?("include") && !path.include?("include/") && File.directory?(path)
- dest.include_list << path
- end
- if include_lib_or_dll(path) && path.include?("lib") && File.directory?(path)
- dest.library_list << path
- end
- if path.include?("lib") && File.file?(path)
- dest.depend_list << path
- end
- end
- end
- end
- def check_package(name, packagePath)
- pack = Package.new(name)
- @package_list << pack
- find_dir(pack, packagePath)
- end
- def include_debug(str)
- str.include?("Debug") || str.include?("debug")
- end
- def include_release(str)
- str.include?("Release") || str.include?("release")
- end
- def puts_ret(obj)
- puts " " + obj
- obj
- end
- def is_x86(str)
- str.include?("Win32") || str.include?("win32")|| str.include?("x86")
- end
- def is_x64(str)
- str.include?("Win64") || str.include?("win64") || str.include?("x64")
- end
- def puts_x86x64(name, srcList, info)
- #32
- puts " x86(Debug) " + name
- srcList
- .select {|e| is_x86(e) && include_debug(e)}
- .each {|e| info.x86d << puts_ret(e) }
- puts " x86(Release) " + name
- srcList
- .select {|e| is_x86(e) && include_release(e)}
- .each {|e| info.x86r << puts_ret(e) }
- #64
- puts " x64(Debug) " + name
- srcList
- .select {|e| is_x64(e) && include_debug(e)}
- .each {|e| info.x64d << puts_ret(e) }
- puts " x64(Release) " + name
- srcList
- .select {|e| is_x64(e) && include_release(e)}
- .each {|e| info.x64r << puts_ret(e) }
- end
- Dir.open("packages") do |dir|
- dir.each do |file|
- next if file == '.' || file == '..'
- path = @pwd + '/packages/' + file
- if File.directory?(path)
- check_package(file, path)
- end
- end
- end
- includeStr = ""
- @package_list.each do |pac|
- next if pac.empty?
- puts pac.name
- # Include
- puts " Include"
- pac.include_list.each {|e| puts (" " + e)}
- # Library
- puts_x86x64(
- "Libeary",
- pac.library_list,
- pac.library_info)
- # Depend
- puts_x86x64(
- "Depend",
- pac.depend_list,
- pac.depend_info)
- end
- puts ""
- puts ""
- puts ("Windows32 Debug")
- @package_list.each do |pac|
- pac.include_list.each do |e|
- puts e.gsub(@pwd + "/", "$(SolutionDir)")
- end
- end
- puts "-"
- @package_list.each do |pac|
- pac.library_info.x86d.each do |e|
- next if e.include?("ltcg")
- next if e.include?("dynamic")
- puts e.gsub(@pwd + "/", "$(SolutionDir)")
- end
- end
- puts "-"
- @package_list.each do |pac|
- pac.depend_info.x86d.each do |e|
- next if e.include?("ltcg")
- next if e.include?(".dll")
- next if e.include?("dynamic")
- puts e.gsub(@pwd + "/", "$(SolutionDir)")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement