Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α26.5 · Ένα Makefile 2-3 γραμμών

How to Make? (προσκεκλημένη διάλεξη), διαφάνειες 31-39 · Δυσκολία ★★☆ · tooling · Κεφάλαια: 26

Το παρακάτω Makefile χτίζει το project main (αρχεία main.c, primes.c, primes.h):

main: main.o primes.o
	gcc -o main main.o primes.o

main.o: main.c primes.h
	gcc -Wall -Wextra -Werror -pedantic -std=c99 -c main.c

primes.o: primes.c primes.h
	gcc -Wall -Wextra -Werror -pedantic -c primes.c

Λειτουργεί; Ναι. Είναι καλό; Όχι.

  1. Ξαναγράψτε το με macros (CC, CFLAGS), ώστε κάποιος που χρησιμοποιεί clang να αλλάζει μία μόνο γραμμή.
  2. Χρησιμοποιήστε automatic variables και ένα wildcard rule, ώστε να μην επαναλαμβάνονται τα rules των object files.
  3. Χρησιμοποιώντας τα built-in rules του Make, κάντε το Makefile 2-3 γραμμές.

Ελέγξτε ότι μετά από touch main.c το make ξαναφτιάχνει μόνο το main.o και το main.

Υπόδειξη

Τα $@, $^ και $< είναι το target, όλα τα prerequisites και το πρώτο prerequisite. Τα built-in rules χρησιμοποιούν τα macros CC και CFLAGS· ένα rule χωρίς recipe απλώς προσθέτει prerequisites. Το -std=c99 μόνο για το main.o χρειάζεται ανάθεση μέσα σε rule.

Αριθμός στον οδηγό: Α26.5 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lecmake-short-makefile · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lecmake-short-makefile.html · Markdown (GitHub)