Automaticamente 'make' quando as dependências mudam

2

Existe uma maneira de executar automaticamente quando você edita um dos arquivos necessários para a compilação?

Pergunta relacionada: Configure o makefile para ser executado na alteração do arquivo , mas isso só tem uma resposta para o Mac OS X - eu gostaria de uma solução mais geral, se possível (embora eu esteja realmente apontando para o Linux).

    
por PeterJCLaw 17.02.2013 / 12:51

1 resposta

3

Não há uma solução geral - cada sistema operacional tem sua própria API de monitoramento de arquivos. No Mac OS X são FSEvents, no Linux - inotify ou fanotify, em BSDs - kqueue.

No Linux, você pode usar incron ou escrever um script usando inotifywait :

#!/usr/bin/env bash
inotifywait -r -m -q -e close_write ~/project \
| while read path event file; do
    if case $file in
        autogenerated.h)   false;;   # ignore a specific file to avoid loops
        *.c|*.h|Makefile)  true;;    # watch all .c, .h files, the Makefile
        *)                 false;;   # ignore all other files to avoid loops
    esac; then                       # (specifically, you MUST ignore auto-
        (cd ~/project && make)       # -generated files)
    fi
done
    
por 17.02.2013 / 13:08