Объяснение Makefile. Понимание чужого Makefile - PullRequest
0 голосов
/ 09 мая 2020

Я относительно новичок в программировании на Linux.

Я понимаю, что файлы Makefile используются для облегчения процесса компиляции при компиляции нескольких файлов. Вместо того, чтобы писать «g ++ main. cpp x. cpp y. cpp -o исполняемый файл» каждый раз, когда вам нужно скомпилировать и запустить вашу программу, вы можете добавить ее в Makefile и запустить make в этом каталоге.

Я пытаюсь заставить RPi и Arduino общаться друг с другом, используя nRF24L01 rad ios используя библиотеку tmrh20 здесь. Мне удалось использовать Makefile tmrh20 для создания исполняемого файла необходимо (на RPi). Однако я хотел бы использовать библиотеку tmrh20 для создания своих собственных исполняемых файлов.

Я просмотрел несколько обучающих видео по Makefiles, но все еще не могу собрать воедино то, что происходит в tmrh20's.

Рассматриваемый Makefile (1) здесь . Я считаю, что он каким-то образом ссылается на второй Makefile (2) (для имен файлов?) здесь. (Почему это необходимо?)

Если это поможет кому-то понять (это заняло у меня некоторое время), мне пришлось собрать с помощью SPIDEV (инструкции здесь ) Makefile (3) в каталоге RF24, который создал несколько объектных файлов, которые, как мне кажется, имеют отношение к Makefile (1) и (2).

Как мне узнать, какие файлы мне нужны для создания моего собственного Makefile, из Makefile tmrh20 (если это имеет смысл?) Он похоже, что в его Makefile используются переменные, которые не определены? Или, возможно, определены в другом месте?

Прошу прощения за плохое объяснение.

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Причина разделения файлов Makefile способом, который вы упомянули и на который ссылались здесь, состоит в том, чтобы отделить определение переменных от реализации. Таким образом, у вас может быть несколько базовых файлов Makefile, которые по-разному определяют свою переменную PROGRAM, но все делают одно и то же в зависимости от значения этой переменной.

По моему личному мнению, я вижу здесь некоторую ценность, но существует очень много способов снять шкуру с этого пресловутого кота.

Выучив GNU Make на собственном горьком опыте, я могу только порекомендовать вам сделать то же самое. Вначале есть небольшая крутая кривая, но как только вы усвоите основные концепции, следуя файлам Makefile других людей, становится довольно легко.

Удачи: https://www.gnu.org/software/make/manual/html_node/index.html

0 голосов
/ 09 мая 2020

Каноническая последовательность - это не просто make и make install. Существует начальный шаг ./configure (например, здесь ), который настраивает все и генерирует несколько файлов, используемых на шагах make.

Вам нужно запустить этот configure скрипт только один раз, если вы не хотите изменять параметры сборки. Я говорю «успешно», потому что первое выполнение обычно жалуется на отсутствие библиотек или файлов заголовков. Но ince ./configure работает без ошибок, make и make install должны работать без ошибок.

PS: Я не пытался его скомпилировать, но поскольку проект имеет довольно обширный configure он скорее всего завершен, и вам не нужно настраивать make-файлы, если вы будете следовать обычной процедуре.

...