Простой вопрос создания файла (C) - PullRequest
4 голосов
/ 26 октября 2010

Эй, я новичок в C, но в целом программист среднего уровня. Я смотрю, чтобы создавать файлы, и у меня возникают проблемы, чтобы понять, для чего они предназначены и как их использовать. Так, например, я сейчас компилирую каждый из моих файлов в своем проекте индивидуально, набрав:

gcc -o newoutfilename1.out oldcfilename1.c
gcc -o newoutfilename2.out oldcfilename2.c

А что если я просто хочу запустить файл make, чтобы скомпилировать их все сразу. Я не хочу помещать их все в один файл в конце, видя, как они не связаны. Тоже иду дальше вперед. Можно ли использовать make-файл для тестирования. Например, после компиляции в newoutfilename1.out Я хочу запустить:

./newoutfilename1.out arg1 arg2 arg3 > intothisfile.data

Как правило, облегчая мою жизнь при кодировании и тестировании, если код компилируется и выводит правильные данные.

Ответы [ 2 ]

3 голосов
/ 26 октября 2010

Ну,

та ссылка, которую вы дали, Келин, вы хотели ее прочитать?

Честно говоря, если бы я не написал несколько сотен файлов make в моей жизни, я бы не понял ни одного слова в той публикации, на которую вы ссылались.

Makefile - это особый скрипт.*

Каждая строка выглядит следующим образом:

target: depends-on.c and.h and-even-another.h  
  command -o target depends-on.c

Первая строка - это все файлы, вторая строка - это команда для создания файла до ":"

Так же, как и файл.Если цель старше, чем 'disabled-on.c' или 'and.h' или 'and-even-another.h', то выполняется команда во второй строке (при условии, что она создаст / регенерирует / выведет файл 'target''), обычно эти файлы называются target.o, если они скомпилированы из исходного файла.

Другими словами: одна строка для описания того, что представляет собой вывод, после двоеточия - файлы, от которых зависит вывод, и ввторая строка - команда для создания выходных данных.

То, что осталось от ':', называется 'target'.

Цели могут зависеть от других целей.

Выможно использовать подстановочные знаки.

*.o: *.c   
  cc -o "something you have to look up, dont now it from my mind ;D"

program: *.o  
  ln *.o my.lib another.lib 

Выше скомпилированы только те файлы * .c, которые новее, чем соответствующие файлы * .o, а затем объединены все файлы * .o вместе с двумя именованными библиотеками.

Если вы работаете на машине с linux / unix, попробуйте "man make".В противном случае Google; D

Angelo

3 голосов
/ 26 октября 2010

На веб-сайтах есть несколько руководств по GNU Make. Google обнаружил несколько хитов. Вы можете начать с этот .

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