Я не могу написать make-файл, который работает. Я прочитал следующий учебник (*), и я вижу, что мы можем писать простые файлы, такие как:Что не так с моим make-файлом?
program : program.cpp
g++ -o program program.cpp -lm
(*) http://www.pma.caltech.edu/~physlab/make.html
Я попытался ADPT примера, чтобы удовлетворить свои собственные потребности, но не работает:
interpreter: gvr_v51.c gvr_v51_interpreter.h
gcc gvr_v51_interpreter.h gvr_v51.c -pedantic -Wall -std=c99 -o gvr_v51 -lSDL
parser: gvr_v51_parser.h gvr_v51.c
gcc gvr_v51_parser.h gvr_v51.c -pedantic -Wall -std=c99 -o gvr_v51 -lSDL
Что мне нужно добиться того, чтобы иметь возможность позволить пользователю компилировать, введя либо «сделать интерпретатор» или «сделать парсер». Разница между ними состоит в том, что первый будет включать заголовок gvr_v51_interpreter.h, в то время как другой будет включать заголовок gvr_v51_parser.h
Оба файла заголовка идентичны, за исключением одной строки #define, которая имеет различное значение в двух файлы. Оставшееся содержимое файлов заголовков включает объявление структур, перечислений, а также прототипов функций.
Является ли то, что я хочу достичь, даже возможно? Если да, не могли бы вы рассказать мне, что я делаю неправильно?
Спасибо.
Какие ошибки вы получаете? – AndyG
убунту @ Ubuntu-VirtualBox: ~/Documents/GvR $ сделать интерпретатор НКУ gvr_v51_interpreter.h gvr_v51.c -pedantic -Wall -std = c99 -o gvr_v51 -lSDL В файле включены из gvr_v51.c: 3: 0: gvr_v51_file_handling.c: В функции 'check_args': gvr_v51_file_handling.c: 6: 18: ошибка: «ARGC_EXPECTED» необъявленная (сначала используется в этой функции) gvr_v51_file_handling.c: 6: 18: примечание: каждый необъявленный идентификатор сообщается только один раз для каждой функции она появляется в gvr_v51_file_handling.c: 7: 3: warning: неявное объявление функции 'printf' [-Wimplicit-function-declaration] – lcazarre
Вы можете просто использовать -DInterpreter, а затем поместить #ifdef в заголовок. Его лучший способ сделать это, чем иметь два одинаковых файла ... но я не знаю, почему это не работает –