make-файл, который собирает библиотеку (lib.a) из списка объектных файлов (* .o) - PullRequest
0 голосов
/ 25 марта 2011

У меня проблема, потому что я никогда не писал ни одного make-файла. Так что, если кто-нибудь сможет мне помочь, я стану счастливым. У меня много разных .o файлов, которые хранятся в разных папках. Например:

папка1: obj1.o
папка 2: obj2.o
папка 3: obj3.o

Мне нужен make-файл, который будет собирать библиотеку из файлов, которые я отправляю в make-файл как param. Параметр также должен быть makefile и содержать информацию о папках, где хранятся необходимые файлы.

Например, я хотел бы собрать lib из объектов, хранящихся в папках 1 и 2 без папок 3. Поэтому make-файл, который я отправляю в качестве параметра в основной make-файл, должен включать маршруты к folder1 и folder2:

local_libs: = ../folder1
local_libs + = ../folder2

Основной make-файл должен проанализировать эту информацию и вызвать libtool, используемый для создания lib из файлов в этих папках. Кто-нибудь может помочь?

Полагаю, это легко реализовать, пример будет отличным!

Ответы [ 2 ]

1 голос
/ 25 марта 2011

Вам нужно правило, которое вводит файлы .o, выводит файл .a и вызывает команду ar для выполнения работы.Что-то вроде:

lib.a: $(OBJECTS)
    ${AR} -cr ${@} ${^}
0 голосов
/ 25 марта 2011

GNU make не поддерживает передачу параметров "в make-файл" в командной строке.

У вас есть два основных механизма для установки параметров, которые будут использоваться make при выполнении make-файла (я предполагаю, что вы используете GNU make, и не все его советы будут применяться к другим make):

  • Запись в submakefiles, возможно, с использованием скрипта. Если в вашем makefile есть строка типа

    include file.mk
    

    gmake будет содержать содержимое file.mk. Измените содержимое file.mk, и вы измените поведение вашего make-файла.

  • Make может принимать значения переменных из переменных окружения, когда они установлены. Это обеспечивает мощный механизм, позволяющий пользователю настраивать поведение вашего make-файла.

...