Как мне скомпилировать проект с несколькими исходными файлами? - PullRequest
2 голосов
/ 15 декабря 2011

У меня есть основной код (.cpp) и некоторые другие файлы (.cpp и соответствующий им .h файл), которые содержат функцию, которая используется в моей основной программе.Я хотел бы знать, как скомпилировать мои файлы и запустить основной код.

Ответы [ 3 ]

6 голосов
/ 15 декабря 2011

Это зависит от вашего компилятора. Например, в GCC вы можете написать:

g++ foo.cpp bar.cpp baz.cpp -o foo # compile program
./foo                              # run program
4 голосов
/ 15 декабря 2011

Basile отлично, вам нужно построить оборудование , чтобы иметь программное обеспечение, с которым вы можете легко работать.Вы действительно хотите иметь возможность просто запустить make или что-то подобное и получить ваш проект, быстро воссозданный повторяемым образом.Вы также хотите убедиться, что весь ваш проект обновлен, восстанавливая все, что зависит от того, что изменилось.В то время как вы могли бы просто держать сценарий оболочки, содержащий g++ строк, как в ответе ruakh , это излишне перекомпилирует больше, чем вам нужно.(Это не имеет большого значения для небольших проектов, но становится важным, когда проекты растут больше, чем тривиальные.)

Я потратил всего пятнадцать минут, чтобы просмотреть документацию OMake, но это выглядит очень многообещающе.make является стандартным для систем и предоставляет огромный набор предопределенных правил сборки, включая правила для C ++, поэтому не составляет труда написать новые Makefile s для проектов.

Это будетВыглядит примерно так:

# 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 правила были заменены шаблонными правилами , но в книге О'Рейли нет описания шаблонных правил.Тем не менее, это хорошая отправная точка, если вам не подходит полная документация GNU Make .

1 голос
/ 15 декабря 2011

Но реальный ответ - использовать некоторые строительные машины, например, например. иметь Makefile и использовать GNU Make .

Есть несколько лучших компоновщиков, чем GNU Make, например Omake

Строители очень полезны, потому что в примере от ruakh вы можете не захотеть перекомпилировать foo.cpp, когда изменился только bar.cpp, поэтому вам нужно принять зависимости в счет.

(а есть Makefile генераторы, такие как automake, cmake ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...