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/
juan_gandhi: (Default)

[personal profile] juan_gandhi 2019-06-26 03:31 am (UTC)(link)
Я хоть и не фанат питона, но билды на нем милое дело - программировал когда-то для моей клавки, в гугле. Хорошее дело. Программируемый язык билдов. Важно.
archaicos: Шарж (Default)

[personal profile] archaicos 2019-06-26 07:34 am (UTC)(link)
Ихный bazel доставляет.

[personal profile] ivanrubilo 2019-07-08 12:08 pm (UTC)(link)
а вот еще неплохая вроде штука, google hafnium используют
https://gn.googlesource.com/gn/