Компиляция с использованием командной строки g ++ Вопрос - PullRequest
0 голосов
/ 21 августа 2011

Я пытаюсь создать Makefile, который компилирует определенную программу.

У меня есть 1x .cpp файл и 2x .h файлы.

Так что я бы пошел

g++ source.cpp header1.h header2.h -o programOut

Дело в том, что я получаю ошибку.

В основном во втором заголовочном файле, где Appointments - это класс, определенный в первом заголовочном файле. Второй заголовочный файл в основном содержит (прототипы функций?). Я только что получил другие функции, которые использовал, удалил реализацию и поместил туда.

error: ‘Appointments’ does not name a type
error: ISO C++ forbids declaration of ‘left’ with no type
error: ‘Appointments’ does not name a type
error: ISO C++ forbids declaration of ‘right’ with no type
error: ‘string’ does not name a type
error: ‘time_t’ does not name a type

Хорошо скомпилируется, если я перейду на g ++ source.cpp -o programOut Однако, когда я добавил .h файлы, когда я набираю g ++, это выдает ошибку, показанную выше. Есть идеи почему?

Ответы [ 3 ]

2 голосов
/ 21 августа 2011

g++ ожидает, что файлы, переданные в командной строке, будут единицами компиляции.Заголовочные файлы не являются единицами компиляции и поэтому не должны передаваться в командной строке.

2 голосов
/ 21 августа 2011

Как правило, вы не должны включать файлы заголовков в список файлов для компиляции. Скорее, ваши исходные файлы (например, source.cpp) будут уже #include заголовки, которые им нужны. Если на самом деле в ваших заголовках есть не прототипный код, который вам нужно скомпилировать в свои собственные файлы .o, вы делаете это неправильно.

0 голосов
/ 08 февраля 2014

g ++ -Wall -Werror source.cpp

, но вы должны находиться в том же каталоге, где присутствует код.

...