Właśnie odziedziczyłem kod C ++, który został źle napisany z jednym plikiem cpp, który zawierał główną i kilka innych funkcji. Istnieją również .h
pliki zawierające klasy i ich definicje funkcji.
Do tej pory program był kompilowany za pomocą polecenia g++ main.cpp
. Teraz, gdy rozdzieliłem klasy .h
i .cpp
pliki, czy muszę używać pliku makefile, czy nadal mogę używać g++ main.cpp
polecenia?
c++
compilation
header
makefile
Meir
źródło
źródło
g++ *.cpp -o output
Aby skompilować osobno bez linkowania, musisz dodać
-c
opcję:źródło
g++ -o my_executable myclass.o main.o
Kompilowanie kilku plików na raz to kiepski wybór, jeśli zamierzasz umieścić to w pliku Makefile.
Zwykle w pliku Makefile (dla GNU / Make ) powinno wystarczyć napisanie:
W ten sposób
make
należałoby poprawnie przekompilować tylko to, co wymaga ponownej kompilacji. Można również dodać kilka poprawek, aby wygenerować zależności pliku nagłówkowego - aby make poprawnie odbudował to, co trzeba odbudować z powodu zmian w pliku nagłówkowym.źródło
Jeśli chcesz, nadal możesz używać g ++ bezpośrednio:
gdzie f1.cpp i f2.cpp to pliki z zawartymi w nich funkcjami. Aby uzyskać szczegółowe informacje o tym, jak używać make do budowania, zobacz doskonałą dokumentację GNU make .
źródło
Wiem, że to pytanie zadawano wiele lat temu, ale nadal chciałem się podzielić tym, jak zwykle kompiluję wiele plików c ++.
g++ -c *.cpp -o myprogram
."myprogram"
./myprogram
to wszystko!!
Powodem, dla którego używam *, jest to, że jeśli masz 30 plików cpp, wpiszesz je wszystkie? lub po prostu użyj znaku * i zaoszczędź czas :)
ps Użyj tej metody tylko wtedy, gdy nie interesuje Cię makefile.
źródło
.h
pliki nie będą miały nic wspólnego z kompilacją ... przejmujesz się tylko plikami cpp ... więc wpiszg++ filename1.cpp filename2.cpp main.cpp -o myprogram
oznacza, że kompilujesz każdy plik cpp, a następnie łączysz je razem w plik
myprgram
.następnie uruchom program
./myprogram
źródło
Jak powiedział rebenvp , użyłem:
A następnie zrób to dla wyjścia:
Ale lepszym rozwiązaniem jest użycie
make
pliku. Przeczytaj tutaj, aby dowiedzieć się więcej omake
plikach.Upewnij się również, że dodałeś wymagane
.h
pliki w.cpp
plikach.źródło
Możesz użyć kilku poleceń g ++, a następnie połączyć, ale najłatwiej jest użyć tradycyjnego Makefile lub innego systemu budowania, takiego jak Scons (które są często łatwiejsze do skonfigurowania niż Makefile).
źródło
Jeśli chcesz używać
#include <myheader.hpp>
wewnątrz swoich plików cpp, możesz użyć:źródło
Kiedyś używałem niestandardowego pliku Makefile, który kompilował wszystkie pliki w bieżącym katalogu, ale za każdym razem musiałem kopiować go do każdego katalogu, którego potrzebowałem.
Dlatego stworzyłem własne narzędzie - Universal Compiler, które znacznie ułatwiło proces kompilacji wielu plików.
źródło
~ / In_ProjectDirectory $ g ++ koordynator_main.cpp koordynator_func.cpp koordynator.h
~ / In_ProjectDirectory $ ./a.out
... Pracowałem !!
Używanie Linux Mint z Geany IDE
Kiedy zapisywałem każdy plik w tym samym katalogu, jeden plik nie został poprawnie zapisany w katalogu; plik koordyn.h. Więc sprawdziłem ponownie i został tam zapisany jako współrzędne.h, a nie niepoprawnie jako -> koordyn.h.gch. Małe rzeczy. Arg !!
źródło