#naukaprogramowania #programowanie #cpp #linux
kiedyś widziałem Makefile, który sprawdzał które pliki zedytowałem, robił ich pliki z rozszerzeniem .o, i linkował w jeden plik do odpalenia. Pozwalało to nie kompilować na nowo plików których nie zmieniałem, co oszczędzało kupę czasu. Jak taki plik napisać?
Mój aktualny makefile:
CC=g++
LINKERFLAGS=-lSDL2 -lSDL2gfx -lSDL2image
COMPILERFLAGS=-Wall -pedantic -Wextra -g -std=c++20
INPUT=src/main.cpp src/Engine/Engine.cpp src/Object/Object.cpp src/functions.cpp
OUTPUT=Output/Game
target:
$(CC) $(INPUT) $(LINKERFLAGS) $(COMPILERFLAGS) -o $(OUTPUT)
kiedyś widziałem Makefile, który sprawdzał które pliki zedytowałem, robił ich pliki z rozszerzeniem .o, i linkował w jeden plik do odpalenia. Pozwalało to nie kompilować na nowo plików których nie zmieniałem, co oszczędzało kupę czasu. Jak taki plik napisać?
Mój aktualny makefile:
CC=g++
LINKERFLAGS=-lSDL2 -lSDL2gfx -lSDL2image
COMPILERFLAGS=-Wall -pedantic -Wextra -g -std=c++20
INPUT=src/main.cpp src/Engine/Engine.cpp src/Object/Object.cpp src/functions.cpp
OUTPUT=Output/Game
target:
$(CC) $(INPUT) $(LINKERFLAGS) $(COMPILERFLAGS) -o $(OUTPUT)
- Najlepsze
- Wszystkie komentarze







osobiście polecam zaprzyjaźnić się z CMake, wtedy będzie rekompilowywał także pliki cpp także jeżeli zmienisz coś w zależnych hpp(goły makefile tego nie ogarnia)
%.o: %.cpp
$(CXX) $(CXXFLAGS) $< -c
2. Warto skorzystać z opcji MMD, bo plik cpp mógł zostać bez zmian, ale mogły się pozmieniać pliki nagłówkowe .h
3. W linijce "target:" dodajesz zależność od składowych obiektów .o
target: file.cppChyba zadziała jak wpiszesz po prostu tą zmienną $(INPUT) tam
Ale @MamCieNaHita dobrze mówi, cmake skomplikowany, ale lepszy, możesz pokombinować z ninja jeszcze
https://dmerej.info/blog/post/chuck-norris-part-1-cmake-ninja/
@inspektor_gadzet: