compiler_c¶
Try to detect a C compiler from the list of supported compilers (gcc, msvc, etc):
def options(opt):
opt.load('compiler_c')
def configure(cnf):
cnf.load('compiler_c')
def build(bld):
bld.program(source='main.c', target='app')
The compilers are associated to platforms in waflib.Tools.compiler_c.c_compiler
. To register
a new C compiler named cfoo (assuming the tool waflib/extras/cfoo.py
exists), use:
from waflib.Tools.compiler_c import c_compiler
c_compiler['win32'] = ['cfoo', 'msvc', 'gcc']
def options(opt):
opt.load('compiler_c')
def configure(cnf):
cnf.load('compiler_c')
def build(bld):
bld.program(source='main.c', target='app')
Not all compilers need to have a specific tool. For example, the clang compilers can be detected by the gcc tools when using:
$ CC=clang waf configure
- waflib.Tools.compiler_c.debug(*k, **kw)[source]¶
Wraps logging.debug and discards messages if the verbosity level
waflib.Logs.verbose
≤ 0
- waflib.Tools.compiler_c.c_compiler = {'aix': ['xlc', 'gcc', 'clang'], 'cygwin': ['gcc', 'clang'], 'darwin': ['clang', 'gcc'], 'default': ['clang', 'gcc'], 'gnu': ['gcc', 'clang'], 'gnukfreebsd': ['gcc', 'clang'], 'hpux': ['gcc'], 'irix': ['gcc', 'irixcc'], 'java': ['gcc', 'msvc', 'clang', 'icc'], 'linux': ['gcc', 'clang', 'icc'], 'osf1V': ['gcc'], 'sunos': ['suncc', 'gcc'], 'win32': ['msvc', 'gcc', 'clang']}¶
Dict mapping platform names to Waf tools finding specific C compilers:
from waflib.Tools.compiler_c import c_compiler c_compiler['linux'] = ['gcc', 'icc', 'suncc']
- waflib.Tools.compiler_c.configure(conf)[source]¶
Detects a suitable C compiler
- Raises
waflib.Errors.ConfigurationError
when no suitable compiler is found