У меня есть основной код (.cpp) и некоторые другие файлы (.cpp и их соответствующий файл .h), которые содержат функцию, которая используется в моей основной программе. Я хотел бы знать, как скомпилировать мои файлы и запустить основной код.Как скомпилировать проект с несколькими исходными файлами?
ответ
Это зависит от вашего компилятора. Например, с GCC вы можете написать:
g++ foo.cpp bar.cpp baz.cpp -o foo # compile program
./foo # run program
Но реальный ответ заключается в использовании некоторых механизмов сборки, например, введите Makefile и используйте GNU Make.
Есть некоторые лучше, чем строитель GNU Make, как Omake
Строители очень полезен, потому что в example по ruakh вы можете не захотеть перекомпилировать foo.cpp
когда только bar.cpp
изменился, так что вы должны принять зависимостей.
(и есть Makefile генераторы, как automake
, cmake
...)
Basile's right on, you need build machinery иметь программное обеспечение, вы можете легко работать. Вы действительно хотите иметь возможность просто запустить make
или что-то подобное и получить ваш проект, перестроенный быстро повторяемым способом. Вы также хотите, чтобы весь ваш проект постоянно обновлялся, перестраивая все, что зависит от того, что изменилось. Хотя вы могли бы просто обойти сценарий оболочки, содержащий строки g++
, как в ruakh's answer, это будет излишне перекомпилировать больше, чем вам нужно. (Что не очень важно для небольших проектов, но становится важным, когда проекты растут больше, чем тривиальные.)
Я потратил пятнадцать минут, чтобы снять документацию с OMake, но выглядит очень многообещающе. make
является стандартным для систем и предоставляет огромный набор предопределенных правил сборки, включая правила для C++, поэтому создавать проекты Makefile
не очень сложно.
Это будет выглядеть примерно так:
# the compiler and its flags
CXX = g++
CXXFLAGS = -Wall
PROGRAM = foo
OBJECTS = foo_a.o foo_b.o foo_c.o foo_d.o
.PHONY: all
.DEFAULT: all
all: $(PROGRAM)
$(PROGRAM): $(OBJECTS)
Объекты foo_a.o
будут построены из соответствующего исходного файла с именем foo_a.c
, foo_a.cc
, foo_a.C
, foo_a.cpp
, foo_a.p
, foo_a.f
, foo_a.F
и т.д., для C , C++, Fortran, Pascal, Lex, Yacc и т. Д.
O'Reilly make
book, к сожалению, устарел на этом этапе; правила .SUFFIX
были вытеснены pattern rules, но в книге O'Reilly нет охвата правил шаблонов. Тем не менее, это все еще хорошая отправная точка, если полный GNU Make documentation не подходит для вас.
Я добавил 'CXXFLAGS' и' CXX' в ваш пример 'Makefile' –
Но я считаю, что документация GNU Make достаточно читаема. –
Спасибо Базиле! Мне нравится документация GNU Make для поиска определенных вещей, но я должен признать, что я не пробирался в документацию GNU до тех пор, пока _after_ не проделал бы весь путь через книгу O'Reilly. – sarnold
- 1. LD_PRELOAD с несколькими исходными файлами
- 2. Компиляция пользовательского ejabberd с несколькими исходными файлами
- 3. Как импортировать папку с несколькими исходными файлами .cpp, каждая с определением main(), в проект Eclipse?
- 4. запустить программу с несколькими исходными файлами в компиляторе GNU C++
- 5. html5 видео с несколькими исходными файлами и несколькими текстовыми дорожками
- 6. Проект Javascript с несколькими файлами
- 7. Как скомпилировать и запустить Java-код с несколькими пакетами или исходными файлами
- 8. c - скомпилировать основной файл с исходными файлами и заголовком
- 9. Как слить проект с несколькими файлами?
- 10. Как обрабатывать проект с несколькими файлами tsconfig.json?
- 11. XSL - Работа с шаблоном вызова с несколькими исходными XML-файлами
- 12. Html5 Видео на Android 2.1 с несколькими исходными файлами
- 13. Каков самый элегантный способ работы с исходными файлами, которые являются исходными (относительными) исходными файлами в VIM?
- 14. Управление исходными файлами в Xcode
- 15. Порядок управления исходными файлами
- 16. Maven не может построить проект с несколькими исходными каталогами
- 17. Как скомпилировать dlib под make с несколькими файлами?
- 18. Makefiles с исходными файлами в различных каталогах
- 19. Сделайте Eclipse распознающим разницу между обычными исходными файлами и исходными исходными файлами
- 20. Указателя на массив разделяется между несколькими исходными файлами
- 21. Как скомпилировать C-программу с несколькими файлами в Xcode
- 22. Как скомпилировать ящик с несколькими файлами в Rust?
- 23. Структуры, не работающие над несколькими исходными файлами C
- 24. Манипулирование QT Ui с различными исходными файлами
- 25. Файлы заголовка с исходными файлами C++
- 26. JSfiddle: как создать проект с несколькими JS/CSS/HTML файлами?
- 27. Как развернуть проект jbpm с несколькими файлами ProcessDefinition.xml?
- 28. Как организовать один проект с несколькими файлами маршрутов
- 29. Как скомпилировать и запустить проект с несколькими классами в пакете?
- 30. Как получить Resource Hacker для работы с исходными файлами .rc
Я упоминаю -Wall & -g, которые очень полезны. –
Большое спасибо, это именно то, что я хотел. – Sohrab
мы также можем использовать эту команду для компиляции всех файлов в папке: g ++ * .cpp – Sohrab