Czy istnieje sposób użycia GNU Make kompilowania wszystkich plików C w katalogu w oddzielne programy, z każdym programem nazwanym jako plik źródłowy bez rozszerzenia .c?Skompiluj wszystkie pliki C w katalogu w oddzielne programy.
Odpowiedz
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
Nie sądzę nawet trzeba makefile - domyślne reguły ukryte make powinno wystarczyć:
$ ls
src0.c src1.c src2.c src3.c
$ make `basename -s .c *`
cc src0.c -o src0
cc src1.c -o src1
cc src2.c -o src2
cc src3.c -o src3
Edited by wiersza poleceń trochę prostsze.
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
clean:
rm -f $(PROGS)
Poprawa odpowiedzi Martina Broadhursta poprzez dodanie "czystego" celu. "make clean" wyczyści wszystkie pliki wykonywalne.
Powinieneś użyć '.PHONY' dla celu takiego jak' clean'. Zobacz http://stackoverflow.com/questions/2145590/what-is-the- purpose-of-phony-in-a-makefile z tego powodu. –
@MartinBroadhurst Należy również użyć '.PHONY' dla celu' all'. – iBug
- 1. Pliki w katalogu w C++
- 2. gmake kompilować wszystkie pliki w katalogu
- 3. Oddzielne pliki w Git
- 4. Otwórz wszystkie pliki w różnych pythonach katalogu
- 5. lista PHP wszystkie pliki w katalogu
- 6. list.files() wszystkie pliki w katalogu i podkatalogach
- 7. Oddzielne pliki nagłówkowe dla konkretnych klas - C++
- 8. Jak uzyskać rozmiar katalogu (pliki w katalogu) w języku C#?
- 9. Scal wszystkie pliki w katalogu w jeden przy pomocy basha
- 10. Jak uzyskać pliki w katalogu, w tym wszystkie podkatalogi
- 11. Zapętlając wszystkie pliki w katalogu w R, stosując wiele komend
- 12. Jak usunąć wszystkie pliki w katalogu przy użyciu wsadu?
- 13. Skompiluj kod C# w aplikacji
- 14. Usunąć wszystkie pliki git z katalogu?
- 15. Skopiuj wszystkie pliki w katalogu z danym ciągiem w nazwie pliku do innego katalogu w Bash
- 16. Dołącz wszystkie pliki w określonym katalogu do pakietu msi
- 17. Dlaczego git ignoruje wszystkie pliki w katalogu poza jednym?
- 18. Znajdź wszystkie pliki w katalogu, który sam nie jest katalogiem.
- 19. Bash: scp wszystkie pliki w katalogu, ale nie podkatalogu
- 20. Java pobiera wszystkie pliki i foldery w katalogu
- 21. Czy pętla powłoki rozpakuje wszystkie pliki w katalogu?
- 22. Usuń wszystkie pliki w katalogu bez podkatalogów z Apache Ant
- 23. Znajdź wszystkie pliki CSV w katalogu przy użyciu Pythona
- 24. Wykreślić wszystkie pliki w katalogu jednocześnie z gnuplot?
- 25. Jak uzyskać wszystkie pliki w katalogu w ipad przy użyciu obiektywu c
- 26. Java - Wyszukaj pliki w katalogu
- 27. Skompiluj C# do celu-C
- 28. Jak dołączyć wszystkie pliki do katalogu za pomocą cmake?
- 29. Jak usunąć wszystkie pliki z katalogu bez usuwania katalogu w Node.js
- 30. Skompiluj i wyrecytuj w C++ używając eclipse
Przy przypomnieniu, że końcowy odstęp jest w rzeczywistości zakładką. –
@Martin brilliant! Ale nie rozumiem, dlaczego nie wywołujesz PROGS i SRCS w głównej linii. –
@ user4050, przepraszam, przegapiłem twoje pytanie. Domyślny cel 'all' buduje' $ (PROGS) ', a główna linia mówi, jak budować pliki bez rozszerzenia, czyli czym jest' $ (PROGS) 'z plików'% .c', co jest tym, co ' $ (SRCS) 'są. –