Объясните, что происходит, когда я выполняю этот Make-файл

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

Она может быть использована для объединения строк из одного и того же файла в файл с несколькими столбцами, таким образом, чтобы последовательные строки заканчивались последовательными столбцами в выходном файле.

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

  • читает имя файла на стандартный вход
  • -d ' ' устанавливает разделитель между столбцами в пробел, а не по умолчанию, в табуляцию.
  • - представляет собой двухкратный стандартный входной файл один и два, поэтому для каждой строки стандартный вход читается два раза, создавая первый и второй столбец.

0
29.08.2014, 01:29
2 ответа

Make-файлы следуют этому формату (Make-файлы всегда должны использовать табуляцию вместо пробелов, поскольку это требуется в большинстве (если не во всех) реализациях make ):

target: dependencies
    operations to build target
  • цель - это то, что вы хотите построить / скомпилировать / создать. Их может быть несколько, и они должны быть построены в порядке Makefile, если не требуется сначала учесть зависимости. первая цель в вашем файле называется целью по умолчанию , это то, что make пытается построить, когда вы вызываете ее без аргументов.
  • Зависимости - это разные части, необходимые для построения цели.

В этом Makefile у вас есть две цели:

  • test
  • lex.yy.c

Поскольку lex.yy.c - это зависимость, необходимая для сборки test , сначала он будет построен из test.l . Как только он будет сгенерирован, можно будет скомпилировать тест . В основном, make ...:

  • Пытается построить тест .
  • Неразрешенная зависимость. lex.yy.c не существует (или был обновлен), его нужно сначала построить.
  • Операции чтения для построения lex.yy.c . Выполняется сборка flex test.l : lex.yy.c .
  • Все зависимости для теста соблюдены. Выполняется g ++ lex.yy.c -ll -o test .
  • тест создан.

Дополнительная информация: Для получения дополнительной информации о make-файлах я бы порекомендовал Платформу разработки Linux от Rafeeq Ur Rehman . Глава 4: Использование GNU Make .

8
28.01.2020, 02:13

Сначала вызывает целевой test , но lex.yy.c является зависимостью.

Поэтому, прежде чем выполнять реальное выполнение, сделайте анализ ваших целей и всех зависимостей. Первая цель - это test , но перед запуском его выполнения вызывается lex.yy.c .

4
28.01.2020, 02:13

Теги

Похожие вопросы