diff --git a/modules/matlab/CMakeLists.txt b/modules/matlab/CMakeLists.txt index f9f869051d..d97d3dd1af 100644 --- a/modules/matlab/CMakeLists.txt +++ b/modules/matlab/CMakeLists.txt @@ -122,8 +122,11 @@ if (NOT MEX_WORKS) message(STATUS "Trying to generate Matlab code") execute_process( COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py ${HDR_PARSER_PATH} - ${CMAKE_CURRENT_SOURCE_DIR}/test/test_generator.hpp ${CMAKE_BINARY_DIR}/junk + ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py + --hdrparser ${HDR_PARSER_PATH} + --rstparser ${RST_PARSER_PATH} + --headers ${CMAKE_CURRENT_SOURCE_DIR}/test/test_generator.hpp + --outdir ${CMAKE_BINARY_DIR}/junk ERROR_VARIABLE GEN_ERROR OUTPUT_QUIET ) @@ -179,8 +182,11 @@ file(REMOVE ${GENERATE_PROXY} ${COMPILE_PROXY}) add_custom_command( OUTPUT ${GENERATE_PROXY} COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py ${HDR_PARSER_PATH} - ${opencv_hdrs} ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py + --hdrparser ${HDR_PARSER_PATH} + --rstparser ${RST_PARSER_PATH} + --headers ${opencv_hdrs} + --outdir ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E touch ${GENERATE_PROXY} COMMENT "Generating Matlab source files" ) diff --git a/modules/matlab/generator/gen_matlab.py b/modules/matlab/generator/gen_matlab.py index efd4330517..fee4673a87 100644 --- a/modules/matlab/generator/gen_matlab.py +++ b/modules/matlab/generator/gen_matlab.py @@ -95,20 +95,27 @@ class MatlabWrapperGenerator(object): if __name__ == "__main__": - - # add the hdr_parser to the path + + # parse the input options import sys, re, os, time - sys.path.append(sys.argv[1]) + from argparse import ArgumentParser + parser = ArgumentParser() + parser.add_argument('--hdrparser') + parser.add_argument('--rstparser') + parser.add_argument('--headers', nargs='+') + parser.add_argument('--outdir') + args = parser.parse_args() + + # add the hdr_parser and rst_parser modules to the path + sys.path.append(args.hdrparser) + sys.path.append(args.rstparser) + from string import Template from hdr_parser import CppHeaderParser from parse_tree import ParseTree, todict, constants from filters import * from jinja2 import Environment, FileSystemLoader - # get the IO from the command line arguments - input_files = sys.argv[2:-1] - output_dir = sys.argv[-1] - # create the generator mwg = MatlabWrapperGenerator() - mwg.gen(input_files, output_dir) + mwg.gen(args.headers, args.outdir)