Articles of makefile

Makefile (generazione automatica delle dipendenze)

solo per una rapida terminologia: #basic makefile rule target: dependencies recipe Il problema: voglio generare automaticamente le dipendenze. Ad esempio, spero di trasformare questo: #one of my targets file.o: file.cpp 1.h 2.h 3.h 4.h 5.h 6.h 7.h 8.h another.h lots.h evenMore.h $(COMPILE) In questo: #one of my targets file.o: $(GENERATE) $(COMPILE) e non sono troppo […]

Definisci make variable al tempo di esecuzione della regola

Nel mio GNUmakefile, vorrei avere una regola che usi una directory temporanea. Per esempio: out.tar: TMP := $(shell mktemp -d) echo hi $(TMP)/hi.txt tar -C $(TMP) cf $@ . rm -rf $(TMP) Come scritto, la regola precedente crea la directory temporanea nel momento in cui la regola viene analizzata . Ciò significa che, anche se […]

Cosa fanno @, – e + come prefissi alle linee di ricette in Make?

Nel manuale GNU Makefile, cita questi prefissi. Se viene fornito .ONESHELL, verrà controllata solo la prima riga della ricetta per i caratteri speciali di prefisso (‘@’, ‘-‘ e ‘+’). Cosa fanno questi prefissi e dove vengono menzionati?

Come posso fare in modo che Makefile ricostruisca automaticamente i file sorgente che includono un file di intestazione modificato? (In C / C ++)

Ho il seguente makefile che uso per creare un programma (un kernel, in realtà) su cui sto lavorando. È da zero e sto imparando il processo, quindi non è perfetto, ma penso che sia abbastanza potente a questo punto per il mio livello di esperienza nella scrittura di makefile. AS = nasm CC = gcc […]

Cmake non riesce a trovare la libreria usando “link_directories”

Io Ubuntu, sto imparando a cmake e make, e sto solo provando un semplice esempio. Ho due directory: src e build . In src , ho due file: main.cpp e CMakeLists.txt , che ha (solo) il testo seguente: add_executable(test main.cpp) link_directories(/usr/lib/x86_64-linux-gnu) target_link_libraries(test protobuf) In /usr/lib/x86_64-linux-gnu , c’è una libreria condivisa chiamata libprotobuf.so , a cui […]

Regola Makefile GNU che genera alcuni target da un singolo file sorgente

Sto tentando di fare quanto segue. C’è un programma, chiamalo foo-bin , che accetta un singolo file di input e genera due file di output. Una regola di Makefile stupida per questo sarebbe: file-a.out file-b.out: input.in foo-bin input.in file-a.out file-b.out Tuttavia, questo non dice in alcun modo che entrambi i bersagli saranno generati simultaneamente. Va […]

Cosa significano i simboli makefile $ @ e $ <?

CC=g++ CFLAGS=-c -Wall LDFLAGS= SOURCES=main.cpp hello.cpp factorial.cpp OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=hello all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ .cpp.o: $(CC) $(CFLAGS) $< -o $@ Cosa fanno $@ e $< esattamente?

Escaping in makefile

Sto cercando di farlo in un makefile e fallisce in modo orribile: M_ARCH := $(shell g++ -dumpmachine | awk ‘{split($1,a,”-“);print a[1]}’) sai perché? Immagino che abbia a che fare con la fuga, ma che cosa e dove?

C ++ Qt – Come aggiungere “-std = c ++ 11” al makefile generato da qmake?

Sto sviluppando un programma in Qt. Il suo makefile viene generato automaticamente dal file .pro. Ho bisogno di usare del codice che ha bisogno del flag -std = c ++ 11 per essere configurato per g ++. Dove in .pro dovrei aggiungere questo flag? (cambiando solo il Makefile non funzionerà poiché viene sovrascritto da quello […]

Come posso creare un semplice makefile per gcc su Linux?

Ho tre file: program.c , program.h e headers.h . program.c include program.h e headers.h . Ho bisogno di compilarlo su Linux usando il compilatore gcc . Non sono sicuro di come farlo. Netbeans ne ha creato uno per me, ma è vuoto.