SWIG的简介、安装、使用方法之详细攻略
目录
SWIG的简介
SWIG的安装
SWIG的使用方法
SWIG是一种软件开发工具,它将C和C++编写的程序与各种高级编程语言连接起来。SWIG用于不同类型的目标语言,包括常见的脚本语言,如Javascript、Perl、PHP、Python、Tcl和Ruby。支持的语言列表还包括非脚本语言,如C#,D,Go language,Java,包括Android,Lua,OCaml,Octave,Scilab和R。还支持几种解释和编译的Scheme实现(Guile,MzScheme/Racket)。
SWIG最常用于创建高级解释或编译的编程环境、用户界面,以及作为测试和原型化C/C++软件的工具。SWIG通常用于解析C/C++接口,并生成用于上述目标语言调用C/C++代码所需的“胶粘代码”。SWIG还可以XML格式导出解析树。SWIG是自由软件,SWIG生成的代码与商业和非商业项目都兼容。
SWIG官网:http://www.swig.org/
下载地址:https://sourceforge.net/projects/swig/files/swig/swig-4.0.1/swig-4.0.1.tar.gz/download?use_mirror=nchc
注:切记,下载的时候要选择对应的系统,比如博主选择的是Win10系统对应的swigwin-4.0.1压缩包。
安装教程:
C:\Users>swig -help
Supported Target Language Options
-csharp - Generate C# wrappers
-d - Generate D wrappers
-go - Generate Go wrappers
-guile - Generate Guile wrappers
-java - Generate Java wrappers
-javascript - Generate Javascript wrappers
-lua - Generate Lua wrappers
-octave - Generate Octave wrappers
-perl5 - Generate Perl 5 wrappers
-php7 - Generate PHP 7 wrappers
-python - Generate Python wrappers
-r - Generate R (aka GNU S) wrappers
-ruby - Generate Ruby wrappers
-scilab - Generate Scilab wrappers
-tcl8 - Generate Tcl 8 wrappers
-xml - Generate XML wrappers
Experimental Target Language Options
-mzscheme - Generate MzScheme/Racket wrappers
-ocaml - Generate OCaml wrappers
General Options
-addextern - Add extra extern declarations
-c++ - Enable C++ processing
-co - Check out of the SWIG library
-copyctor - Automatically generate copy constructors wherever possible
-cpperraswarn - Treat the preprocessor #error statement as #warning (default)
-cppext - Change file extension of generated C++ files to
(default is cxx)
-copyright - Display copyright notices
-debug-classes - Display information about the classes found in the interface
-debug-module - Display module parse tree at stages 1-4, is a csv list of stages
-debug-symtabs - Display symbol tables information
-debug-symbols - Display target language symbols in the symbol tables
-debug-csymbols - Display C symbols in the symbol tables
-debug-lsymbols - Display target language layer symbols
-debug-tags - Display information about the tags found in the interface
-debug-template - Display information for debugging templates
-debug-top - Display entire parse tree at stages 1-4, is a csv list of stages
-debug-typedef - Display information about the types and typedefs in the interface
-debug-typemap - Display typemap debugging information
-debug-tmsearch - Display typemap search debugging information
-debug-tmused - Display typemaps used debugging information
-directors - Turn on director mode for all the classes, mainly for testing
-dirprot - Turn on wrapping of protected members for director classes (default)
-D - Define a symbol (for conditional compilation)
-E - Preprocess only, does not generate wrapper code
-external-runtime [file] - Export the SWIG runtime stack
-fakeversion - Make SWIG fake the program version number to
-fcompact - Compile in compact mode
-features - Set global features, where is a comma separated list of
features, eg -features directors,autodoc=1
If no explicit value is given to the feature, a default of 1 is used
-fastdispatch - Enable fast dispatch mode to produce faster overload dispatcher code
-Fmicrosoft - Display error/warning messages in Microsoft format
-Fstandard - Display error/warning messages in commonly used format
-fvirtual - Compile in virtual elimination mode
-help - Display help
-I- - Don't search the current directory
-I - Look for SWIG files in directory
-ignoremissing - Ignore missing include files
-importall - Follow all #include statements as imports
-includeall - Follow all #include statements
-l - Include SWIG library file
-macroerrors - Report errors inside macros
-makedefault - Create default constructors/destructors (the default)
-M - List all dependencies
-MD - Is equivalent to `-M -MF ', except `-E' is not implied
-MF - Generate dependencies into and continue generating wrappers
-MM - List dependencies, but omit files in SWIG library
-MMD - Like `-MD', but omit files in SWIG library
-module - Set module name to
-MP - Generate phony targets for all dependencies
-MT - Set the target of the rule emitted by dependency generation
-nocontract - Turn off contract checking
-nocpperraswarn - Do not treat the preprocessor #error statement as #warning
-nodefault - Do not generate default constructors nor default destructors
-nodefaultctor - Do not generate implicit default constructors
-nodefaultdtor - Do not generate implicit default destructors
-nodirprot - Do not wrap director protected members
-noexcept - Do not wrap exception specifiers
-nofastdispatch - Disable fast dispatch mode (default)
-nopreprocess - Skip the preprocessor step
-notemplatereduce - Disable reduction of the typedefs in templates
-O - Enable the optimization options:
-fastdispatch -fvirtual
-o - Set name of C/C++ output file to
-oh - Set name of C++ output header file for directors to
-outcurrentdir - Set default output dir to current dir instead of input file's path
-outdir - Set language specific files output directory to
-pcreversion - Display PCRE version information
-small - Compile in virtual elimination and compact mode
-swiglib - Report location of SWIG library and exit
-templatereduce - Reduce all the typedefs in templates
-v - Run in verbose mode
-version - Display SWIG version number
-Wall - Remove all warning suppression, also implies -Wextra
-Wallkw - Enable keyword warnings for all the supported languages
-Werror - Treat warnings as errors
-Wextra - Adds the following additional warnings: 202,309,403,405,512,321,322
-w - Suppress/add warning messages, eg -w401,+321 - see Warnings.html
-xmlout - Write XML version of the parse tree to after normal processing
Options can also be defined using the SWIG_FEATURES environment variable, for example:
$ SWIG_FEATURES="-Wall"
$ export SWIG_FEATURES
$ swig -python interface.i
is equivalent to:
$ swig -Wall -python interface.i
Arguments may also be passed in a file, separated by whitespace. For example:
$ echo "-Wall -python interface.i" > args.txt
$ swig @args.txt
Note: 'swig - -help' displays options for a specific target language.