vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2019-06-25 08:00 pm

waf вместо make и autoconf

Набрёл на новую утилиту `waf', заменяющую традиционные скрипты makefile и configure. До этого несколько лет назад пытался использовать cmake, не то чтобы безуспешно, но радости было мало. А здесь вроде как намного проще и достаточно универсально выходит.

Утилита waf представляет собой питоновский бинарный модуль размером 100 килобайт и не требует внешних зависимостей (кроме собственно Питона). Устанавливается командой:
    curl -o ~/bin/waf https://waf.io/waf-2.0.17
Пример скрипта для компиляции программы на Си:
#! /usr/bin/env python
# encoding: utf-8
import sys

APPNAME = 'sdwrite'
VERSION = '0.1'

def options(opt):
    opt.load('compiler_c')

def configure(conf):
    out = 'build'
    conf.load('compiler_c')

def build(bld):
    LIBS = []
    if sys.platform == 'linux2':
        LIBS = ['udev']
    if sys.platform == 'darwin':
        LIBS = ['-framework', 'IOKit', '-framework', 'CoreFoundation']

    bld.program(
        source       = 'sdwriter.c',
        target       = APPNAME,
        includes     = ['.'],
        lib          = LIBS,
        install_path = '/usr/local/bin',
        cflags       = ['-g', '-O', '-Wall'],
        ldflags      = ['-g'],
    )
Конфигурация и компиляция программы:
    waf configure build
Установка:
    waf install
Удаление временных файлов:
    waf clean
    waf distclean
Подробное описание есть здесь: https://waf.io/book/

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org