Używanie G++ do kompilacji wielu.cpp i.pliki h
Właśnie odziedziczyłem trochę kodu C++, który został źle napisany z jednym plikiem cpp, który zawierał główną i kilka innych funkcji. Istnieją również pliki .h
, które zawierają klasy i ich definicje funkcji.
Do tej pory program był kompilowany przy użyciu polecenia g++ main.cpp
. Teraz, gdy rozdzieliłem klasy na pliki .h
i .cpp
, Czy muszę używać pliku makefile, czy mogę nadal używać polecenia g++ main.cpp
?
9 answers
Wyświetla wszystkie pozostałe pliki cpp po main.cpp.
Ie
g++ main.cpp other.cpp etc.cpp
I tak dalej.
Lub możesz skompilować je wszystkie indywidualnie. Następnie łączysz wszystkie wynikające".o " Pliki razem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-08 09:22:25
Aby skompilować osobno bez linkowania, musisz dodać opcję-c:
g++ -c myclass.cpp
g++ -c main.cpp
g++ myclass.o main.o
./a.out
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-27 14:49:32
Teraz, kiedy rozdzieliłem zajęcia .h i .pliki cpp Czy muszę używać makefile lub nadal mogę używać " g++ main.dowództwo cpp?
Kompilowanie kilku plików naraz jest kiepskim wyborem, jeśli zamierzasz umieścić to w pliku Makefile.
Normalnie w pliku Makefile (dla GNU/Make) powinno wystarczyć napisanie, że:
# "all" is name of the default target, running "make" without params would use it
all: executable1
# for C++, replace CC (c compiler) with CXX (c++ compiler) which is used as default linker
CC=$(CXX)
# tell which files should be used, .cpp -> .o make would do automatically
executable1: file1.o file2.o
W ten sposób make
będzie poprawnie rekompilować tylko to, co trzeba rekompilować. Można również dodać kilka poprawek, aby wygenerować zależności plików nagłówkowych - tak, że make będzie również poprawnie odbudować to, co trzeba przebudować ze względu na zmiany w pliku nagłówkowym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-08 11:39:33
Możesz nadal używać g++ bezpośrednio, jeśli chcesz:
g++ f1.cpp f2.cpp main.cpp
Gdzie f1.cpp i f2.cpp to pliki z funkcjami w nich. Aby dowiedzieć się więcej o tym, jak używać make do budowania, zobacz doskonałą dokumentację GNU make.
Wiem, że to pytanie zostało zadane lata temu, ale nadal chciałem podzielić się tym, jak zwykle kompiluję wiele plików c++.
- Załóżmy, że masz 5 plików cpp, wszystko co musisz zrobić, to użyć * zamiast wpisywać nazwy każdego pliku cpp, np. g G++ - c*.cpp-o myprogram.
- to wygeneruje "myprogram"
- Uruchom program ./ myprogram
To wszystko!!
Powodem, dla którego używam * jest to, że co jeśli masz 30 plików cpp, wpisałbyś wszystkie? lub po prostu użyj * podpisz i oszczędzaj czas:)
P. S używaj tej metody tylko jeśli nie dbasz o makefile.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-09 16:41:21
Możesz użyć kilku komend g++, a następnie link, ale najprostszym jest użycie tradycyjnego pliku Makefile lub innego systemu budowania: jak Scons (które często są łatwiejsze do skonfigurowania niż pliki Makefile).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-08 09:21:35
.pliki h nie mają nic wspólnego ze kompilacją ... dbasz tylko o pliki cpp... więc wpisz nazwę pliku g++ 1.nazwa pliku cpp2.cpp main.cpp - o myprogram
Oznacza, że kompilujesz każdy plik cpp, a następnie łączysz je ze sobą w myprgram.
Następnie uruchom swój program ./ myprogram
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-18 20:36:32
Używałem niestandardowego pliku Makefile, który skompilował wszystkie pliki w bieżącym katalogu, ale musiałem go skopiować w każdym katalogu, którego potrzebowałem, za każdym razem.
StworzyĹ 'em wiÄ ™ c wĹ' asne narzÄ ™ dzie - Universal Compiler co znacznie uĹ 'atwiĺ' o proces kompilacji wielu plikĂłw.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-17 18:53:00
~ / In_ProjectDirectory $ g++ cpp_func.cpp.h
~ / In_ProjectDirectory $ ./ a. out
... Zadziałało!!
Używanie Linux Mint z Geany IDE
Gdy zapisałem każdy plik do tego samego katalogu, jeden plik nie został poprawnie zapisany w katalogu; plik H. Ponownie został tam zapisany jako koordin.h, a nie niepoprawnie jak -> h. gch. Małe rzeczy. Arg!!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-17 06:40:55