Package distutils :: Module msvccompiler :: Class MSVCCompiler
[hide private]
[frames] | no frames]

_ClassType MSVCCompiler

ccompiler.CCompiler --+
                      |
                     MSVCCompiler

Concrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.

Instance Methods [hide private]
 
__init__(self, verbose=0, dry_run=0, force=0)
 
initialize(self)
 
object_filenames(self, source_filenames, strip_dir=0, output_dir='')
 
compile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None)
Compile one or more source files.
 
create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None)
Link a bunch of stuff together to create a static library file.
 
link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None)
Link a bunch of stuff together to create an executable or shared library file.
 
library_dir_option(self, dir)
Return the compiler option to add 'dir' to the list of directories searched for libraries.
 
runtime_library_dir_option(self, dir)
Return the compiler option to add 'dir' to the list of directories searched for runtime libraries.
 
library_option(self, lib)
Return the compiler option to add 'dir' to the list of libraries linked into the shared library or executable.
 
find_library_file(self, dirs, lib, debug=0)
Search the specified list of directories for a static or shared library file 'lib' and return the full path to that file.
 
find_exe(self, exe)
Return path to an MSVC executable program.
 
get_msvc_paths(self, path, platform='x86')
Get a list of devstudio directories (include, lib or path).
 
set_path_env_var(self, name)
Set environment variable 'name' to an MSVC path type value.

Inherited from ccompiler.CCompiler: add_include_dir, add_library, add_library_dir, add_link_object, add_runtime_library_dir, announce, debug_print, define_macro, detect_language, executable_filename, execute, has_function, library_filename, link_executable, link_shared_lib, link_shared_object, mkpath, move_file, preprocess, set_executable, set_executables, set_include_dirs, set_libraries, set_library_dirs, set_link_objects, set_runtime_library_dirs, shared_object_filename, spawn, undefine_macro, warn

Class Variables [hide private]
  compiler_type = 'msvc'
  executables = {}
  _c_extensions = ['.c']
  _cpp_extensions = ['.cc', '.cpp', '.cxx']
  _rc_extensions = ['.rc']
  _mc_extensions = ['.mc']
  src_extensions = ['.c', '.cc', '.cpp', '.cxx', '.rc', '.mc']
  res_extension = '.res'
  obj_extension = '.obj'
  static_lib_extension = '.lib'
  shared_lib_extension = '.dll'
  shared_lib_format = '%s%s'
  static_lib_format = '%s%s'
  exe_extension = '.exe'

Inherited from ccompiler.CCompiler: EXECUTABLE, SHARED_LIBRARY, SHARED_OBJECT, language_map, language_order

Method Details [hide private]

__init__(self, verbose=0, dry_run=0, force=0)
(Constructor)

 
Overrides: ccompiler.CCompiler.__init__

object_filenames(self, source_filenames, strip_dir=0, output_dir='')

 
Overrides: ccompiler.CCompiler.object_filenames

compile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None)

 

Compile one or more source files.

'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned.

If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o".

'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence.

'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only.

'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s).

'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard.

'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity.

Raises CompileError on failure.

Overrides: ccompiler.CCompiler.compile
(inherited documentation)

create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None)

 

Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any).

'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put.

'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency).

'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages.

Raises LibError on failure.

Overrides: ccompiler.CCompiler.create_static_lib
(inherited documentation)

link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None)

 

Link a bunch of stuff together to create an executable or shared library file.

The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed).

'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations.

'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.)

'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.)

'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake).

'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used).

'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages.

Raises LinkError on failure.

Overrides: ccompiler.CCompiler.link
(inherited documentation)

library_dir_option(self, dir)

 

Return the compiler option to add 'dir' to the list of directories searched for libraries.

Overrides: ccompiler.CCompiler.library_dir_option
(inherited documentation)

runtime_library_dir_option(self, dir)

 

Return the compiler option to add 'dir' to the list of directories searched for runtime libraries.

Overrides: ccompiler.CCompiler.runtime_library_dir_option
(inherited documentation)

library_option(self, lib)

 

Return the compiler option to add 'dir' to the list of libraries linked into the shared library or executable.

Overrides: ccompiler.CCompiler.library_option
(inherited documentation)

find_library_file(self, dirs, lib, debug=0)

 

Search the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories.

Overrides: ccompiler.CCompiler.find_library_file
(inherited documentation)

find_exe(self, exe)

 

Return path to an MSVC executable program.

Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'.

get_msvc_paths(self, path, platform='x86')

 

Get a list of devstudio directories (include, lib or path).

Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found.

set_path_env_var(self, name)

 

Set environment variable 'name' to an MSVC path type value.

This is equivalent to a SET command prior to execution of spawned commands.