Makefile для объединения js файлов и создания сжатой версии

Я пытаюсь написать базовый make файл, который объединяет несколько js файлов в один, а затем делает то же самое, но сжимает их.

Пока у меня есть тот, который может сделать сжатую версию прекрасной.

# Set the source directory
srcdir = src/

# Create the list of modules
modules =   ${srcdir}core.js\
            ${srcdir}sizzle.js\
            ${srcdir}json2.js\
            ${srcdir}ajax.js\
            ${srcdir}attribute.js\
            ${srcdir}content.js\
            ${srcdir}cookie.js\
            ${srcdir}css.js\
            ${srcdir}event.js\
            ${srcdir}json.js\
            ${srcdir}location.js\
            ${srcdir}opacity.js\
            ${srcdir}ready.js\
            ${srcdir}size.js\
            ${srcdir}init.js

# Compress all of the modules into spark.js
spark.js: ${modules}
    java -jar yuicompressor.jar -o [email protected] $^

Кто-нибудь знает, как я собирался добавить несжатую версию под названием spark-dev.js? Я пытался использовать кошку, но я не очень далеко. Это мой первый makefile, который я когда-либо писал.

ИЗМЕНИТЬ Я пробовал этот код с cat

spark-dev.js: ${modules}
    cat [email protected] $^

Ответ 1

Вы были почти там:-) Это должно работать:

spark-dev.js: ${modules}
    cat > [email protected] $^

Фон: функция cat заключается в том, чтобы (попытаться) открыть все файлы, перечисленные в его командной строке, и сбросить содержимое в stdout. Синтаксис > [email protected] понимается под оболочкой, означающей "создать файл [email protected] и подключить к нему эту команду stdout", поэтому теперь мы закончим содержимое $^, объединенное вместе в [email protected].