URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9984
[ Назад ]

Исходное сообщение
"Makefile - использовать список имён файлов. Типа: массив."

Отправлено Aick , 17-Мрт-15 20:53 
Есть архитектурно независимые скрипты, разложены по каталожикам.
В мэйк файле:
Есть цель - упаковать код в tar.gz.
Есть цель - install.
Обе работают с одинаковым списком файлов.

Я хочу этот список файлов объявить в начале Makefile, а затем в разных местах использовать его. Есть такая возможность? Объявить массив строк и потом работать с ним внутри разных целей.

Почему список - потому как хочется, чтобы если в момент установки что-то "лишнее" лежит в дереве, то чтобы оно игнорировалось при make install. Можно сразу "забирать" целиком дерево файлов, задним числом ставить права доступа и т.д. Но так не хочу. Хочу мучаться со списком файлов (шаблонов-регулярок).

Писать инсталлятор и упаковщик в tar.gz, на том языке, который "умеет массивы", вызывать их обоих из мейка - чего-то тут не так, это, значит, свой мэйк выписывать заново.

Как бы это всё красиво организовать...? Таки держать чистым дерево "сырцов", забирать его "как есть" при упаковках и установках?

Таки есть способ использовать массив в мейк файле?


Содержание

Сообщения в этом обсуждении
"Makefile - использовать список имён файлов. Типа: массив."
Отправлено Andrey Mitrofanov , 17-Мрт-15 21:42 
> Я хочу этот список файлов объявить в начале Makefile, а затем в
> разных местах использовать его. Есть такая возможность? Объявить массив строк и
> потом работать с ним внутри разных целей.

Есть.

>ак бы это всё красиво организовать...?

Укради кусок кода - никто не смотрит!
http://git.drbd.org/gitweb.cgi?p=drbd-utils.git;a=blob;f=doc...

> Таки есть способ использовать массив в мейк файле?

Есть.


"Makefile - использовать список имён файлов. Типа: массив."
Отправлено Aick , 18-Мрт-15 13:05 
Спасибо! У меня имена файлов без пробелов и это выход. :)

Если правильно понял, это не массивы, а использование авто разбиения строки на слова по разделителю (по пробелу). Нельзя обратиться к элементу по индексу. А такие трюки как "dirname/${array[@]}" вообще недоступны.


"Makefile - использовать список имён файлов. Типа: массив."
Отправлено me , 19-Мрт-15 10:28 
> Спасибо! У меня имена файлов без пробелов и это выход. :)
> Если правильно понял, это не массивы, а использование авто разбиения строки на
> слова по разделителю (по пробелу).

files := $(shell find dirname)

> Нельзя обратиться к элементу по индексу.
> А такие трюки как "dirname/${array[@]}" вообще недоступны.

бог знает о чем вы, если не об этом:
files := $(addprefix dirname/,$(leafs))