С помощью G++ для компиляции нескольких.cpp и.H-файлы
Я только что унаследовал код C++, который был плохо написан с одним файлом cpp, который содержал основную и кучу других функций. Есть также .h
файлы, содержащие классы и их определения функций.
до сих пор программа компилировалась с помощью команды g++ main.cpp
. Теперь, когда я разделил классы на .h
и .cpp
файлы мне нужно использовать makefile или я все еще могу использовать
9 ответов
список всех других файлов cpp после main.СРР.
ie
g++ main.cpp other.cpp etc.cpp
и так далее.
или вы можете скомпилировать их все по отдельности. Затем вы связываете все полученное".о" файлов вместе.
чтобы скомпилировать отдельно без ссылки, вам нужно добавить опцию-c:
g++ -c myclass.cpp
g++ -c main.cpp
g++ myclass.o main.o
./a.out
Теперь, когда я разделил классы .h и .cpp-файлы мне нужно использовать makefile или я все еще могу использовать " G++ main.команда ЧГК"?
компиляция нескольких файлов одновременно является плохим выбором, если вы собираетесь поместить это в Makefile.
обычно в Makefile (для GNU / Make) достаточно написать, что:
# "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
вот так make
будет правильно перекомпилировать только то, что нужно перекомпилировать. Можно также добавьте несколько настроек для создания зависимостей файла заголовка-так что make также правильно перестроит то, что нужно перестроить из-за изменений файла заголовка.
вы все еще можете использовать g++ напрямую, если хотите:
g++ f1.cpp f2.cpp main.cpp
где f1.cpp и f2.СРР файлы с функциями в них. Подробнее о том, как использовать make для сборки, см. В разделе excellent GNU сделать документацию.
Я знаю, что этот вопрос был задан много лет назад, но все еще хотел поделиться тем, как я обычно компилирую несколько файлов c++.
- предположим, у вас есть 5 файлов cpp, все, что вам нужно сделать, это использовать * вместо ввода каждого имени файлов cpp, например G G++ -c *.cpp-o myprogram.
- это будет генерировать "myprogram"
- запустить программу ./иногда
вот и все!!
причина, по которой я использую * , заключается в том, что если у вас есть 30 файлов cpp ты их все печатаешь? или просто используйте знак * и сэкономьте время:)
p.s используйте этот метод, только если вы не заботитесь о makefile.
вы можете использовать несколько команд g++, а затем связать, но проще всего использовать традиционный Makefile или другую систему сборки: например, Scons (которые часто легче настроить, чем Makefiles).
.H файлы не будут иметь ничего общего с компиляцией ... вы заботитесь только о файлах cpp... Итак, введите G++ filename1.cpp filename2.cpp main.cpp-o myprogram
означает, что вы компилируете каждый cpp-файл, а затем связываете их вместе в myprgram.
запустите программу ./иногда
Я использовал пользовательский Makefile, который скомпилировал все файлы в текущем каталоге, но мне приходилось копировать его в каждый каталог, который мне нужен, каждый раз.
поэтому я создал свой собственный инструмент -Универсальный Компилятор что сделало процесс намного проще при компиляции многих файлов.
~ / In_ProjectDirectory $ g++ coordin_main.cpp coordin_func.cpp coordin.h
~ / In_ProjectDirectory $ ./а.из
... Сработало!!
использование Linux Mint с Geany IDE
когда я сохранил каждый файл в том же каталоге, один файл не был сохранен правильно в каталоге; coordin.H-файл. Итак, перепроверили, и он был сохранен там как coordin.h, а не неправильно как - > coordin.ч. ГЧ. Мелочи. Арг!!