Ответ 1
перечислить все остальные файлы cpp после main.cpp.
ie
g++ main.cpp other.cpp etc.cpp
и т.д.
Или вы можете скомпилировать их все индивидуально. Затем вы связываете все полученные ".o" файлы вместе.
Я только что унаследовал некоторый код на С++, который был написан плохо с одним файлом cpp, который содержал основную и кучу других функций. Существуют также файлы .h
, содержащие классы и определения их функций.
До сих пор программа была скомпилирована с помощью команды g++ main.cpp
. Теперь, когда я разделил классы на файлы .h
и .cpp
, мне нужно использовать make файл или я могу использовать команду g++ main.cpp
?
перечислить все остальные файлы cpp после main.cpp.
ie
g++ main.cpp other.cpp etc.cpp
и т.д.
Или вы можете скомпилировать их все индивидуально. Затем вы связываете все полученные ".o" файлы вместе.
Чтобы скомпилировать отдельно без ссылок, вам нужно добавить -c
:
g++ -c myclass.cpp
g++ -c main.cpp
g++ myclass.o main.o
./a.out
Теперь, когда я разделил классы на файлы .h и .cpp, мне нужно использовать make файл или я могу использовать команду "g++ main.cpp"?
Компиляция нескольких файлов сразу является плохим выбором, если вы собираетесь поместить это в 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.cpp - файлы с функциями в них. Подробнее о том, как использовать make для сборки, см. В отличной документации GNU.
Я знаю, что этот вопрос задавался много лет назад, но все же хотел поделиться тем, как я обычно компилирую несколько файлов c++.
g++ -c *.cpp -o myprogram
."myprogram"
./myprogram
все это!!
Причина, по которой я использую *, заключается в том, что если у вас есть 30 cpp файлов, вы бы набрали их все? или просто используйте знак * и сэкономьте время :)
ps Используйте этот метод, только если вам не нужен make файл.
Вы можете использовать несколько команд g++, а затем ссылку, но проще всего использовать традиционный Makefile или какую-либо другую систему сборки: например, Scons (которые часто легче настраивать, чем Make файлы).
.h
файлы не будут иметь ничего общего с компиляцией... вы заботитесь только о файлах cpp... так что введите g++ filename1.cpp filename2.cpp main.cpp -o myprogram
означает, что вы компилируете каждый файл cpp и затем связываете их вместе в myprgram
.
затем запустите вашу программу ./myprogram
Я использовал пользовательский Makefile, который скомпилировал все файлы в текущем каталоге, но мне пришлось копировать его в каждый каталог, в котором я нуждался, каждый раз.
Итак, я создал свой собственный инструмент - Универсальный компилятор, который значительно упростил процесс при компиляции многих файлов.
Как сказал rebenvp, я использовал:
g++ *.cpp -o output
А затем сделайте это для вывода:
./output
Но лучшее решение - использовать make
file. Читайте здесь, чтобы узнать больше о файлах make
.
Также убедитесь, что вы добавили необходимые файлы .h
файлы .cpp
.
Как бы вы успешно сделать это на Windows?
~/In_ProjectDirectory $g++ coordin_main.cpp coordin_func.cpp coordin.h
~/In_ProjectDirectory $./a.out
... Работает!!
Использование Linux Mint с Geany IDE
Когда я сохранил каждый файл в том же каталоге, один файл не был сохранен правильно в каталоге; файл Coordin.h. Итак, перепроверенный и он был сохранен там как Coordin.h, а не неправильно как → coordin.h.gch. Маленький материал. Arg!!