С помощью 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, чтобы сделать сборку, см. Отличный пакет документации.
Я знаю, что этот вопрос был задан много лет назад, но все еще хотел поделиться тем, как я обычно компилирую несколько файлов c++.
- допустим, у вас есть 5 файлов cpp, все, что вам нужно сделать, это использовать * вместо ввода каждого имени файлов cpp, например G G++ -c *.cpp-o myprogram.
- это создаст "myprogram"
- запустить программу ./иногда
вот и все!!
причина, по которой я использую * это то, что если у вас есть 30 cpp файлов будет вы печатаете их все? или просто используйте знак * и сэкономить время:)
p.S используйте этот метод, только если вы не заботитесь о makefile.
вы можете использовать несколько команд g++, а затем связать, но проще всего использовать традиционный Makefile или какую-либо другую систему сборки: например, Scons (которые часто легче настроить, чем Makefiles).
.H файлы не будут иметь ничего общего с компиляцией ... вы заботитесь только о файлах cpp... поэтому введите G++ filename1.СРР имя_файла2.СРР главная.cpp-o myprogram
означает, что вы компилируете каждый cpp файлы, а затем связали их вместе в myprgram.
запустите программу ./иногда
Я использовал пользовательский Makefile, который скомпилировал все файлы в текущем каталоге, но мне приходилось копировать его в каждый каталог, который мне нужен, каждый раз.
поэтому я создал свой собственный инструмент -Универсальный Компилятор что сделало процесс намного проще при компиляции многих файлов.
~ / In_ProjectDirectory $ g++ coordin_main.cpp coordin_func.cpp coordin.h
~ / In_ProjectDirectory $ ./а.из
... Сработало!!
использование Linux Mint с Geany IDE
когда я сохранил каждый файл в том же каталоге, один файл не был сохранен правильно в каталоге; координаты.H-файл. Итак, перепроверили и сохранили там же как координаты.h, а не неправильно как -> coordin.ч. ГЧ. Все эти мелочи. Арг!!