diff --git a/extconf.rb b/extconf.rb index 6684fb5..834fd88 100755 --- a/extconf.rb +++ b/extconf.rb @@ -1,6 +1,18 @@ #!/usr/bin/env ruby require "mkmf" +def cv_version_suffix(incdir) + major, minor, subminor = nil, nil, nil + open("#{incdir}/opencv2/core/version.hpp", 'r') { |f| + f.read.lines.each { |line| + major = $1.to_s if line =~ /\A#define\s+CV_MAJOR_VERSION\s+(\d+)\s*\Z/ + minor = $1.to_s if line =~ /\A#define\s+CV_MINOR_VERSION\s+(\d+)\s*\Z/ + subminor = $1.to_s if line =~ /\A#define\s+CV_SUBMINOR_VERSION\s+(\d+)\s*\Z/ + } + } + major + minor + subminor +end + incdir, libdir = dir_config("opencv", "/usr/local/include", "/usr/local/lib") dir_config("libxml2", "/usr/include", "/usr/lib") @@ -17,18 +29,18 @@ opencv_libraries = ["opencv_calib3d", "opencv_contrib", "opencv_core", "opencv_f puts ">> Check the required libraries..." - -OPENCV_VERSION_SUFFIX = '242' case CONFIG["arch"] when /mswin32/ - opencv_libraries.map! {|lib| lib + OPENCV_VERSION_SUFFIX } + suffix = cv_version_suffix(incdir) + opencv_libraries.map! {|lib| lib + suffix } have_library("msvcrt") opencv_libraries.each {|lib| raise "#{lib}.lib not found." unless have_library(lib) } $CFLAGS << ' /EHsc' when /mingw32/ - opencv_libraries.map! {|lib| lib + OPENCV_VERSION_SUFFIX } + suffix = cv_version_suffix(incdir) + opencv_libraries.map! {|lib| lib + suffix } have_library("msvcrt") opencv_libraries.each {|lib| raise "lib#{lib} not found." unless have_library(lib)