Что означает символ% в Makefile

Это можно сделать с помощью проекта FFmpeg :

ffprobe 'Breaking The Girl-EVmfXA3vjuE.mp4'

Результат:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Breaking The Girl-EVmfXA3vjuE.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2016-10-05T03:35:07.000000Z
  Duration: 00:04:55.38, start: 0.000000, bitrate: 330 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709),
      1280x720 [SAR 1:1 DAR 16:9], 200 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2016-10-05T03:35:07.000000Z
      handler_name    : ISO Media file produced by Google Inc.
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp,
      125 kb/s (default)
    Metadata:
      creation_time   : 2016-10-05T03:35:07.000000Z
      handler_name    : ISO Media file produced by Google Inc.

10
20.02.2017, 18:02
2 ответа

Оба выражения определяют все файлы.

Нет, первое правило сообщает make , как получить файл .o с соответствующим файлом .c . Обратите внимание на единственное число: один файл.

Второе правило (утверждает) сообщает make , как получить группу файлов .o при наличии другой группы соответствующих файлов .c . Обратите внимание на множественное число: все файлы .c , полученные в результате подстановки *. C .

Кстати, %. O:% c является расширением GNU.

С другой стороны, вы не узнаете, как использовать make в StackOverflow. Вместо этого вам следует подумать о чтении книги.

8
27.01.2020, 20:00

Конструкция:

%.o: %.c
        $(CC) -c $^  -o $@  

представляет собой шаблонное правило , которое является типом неявного правила. Он определяет одну цель и одну зависимость и вызывает один вызов $ (CC) для каждой цели. Хотя это:

SOURCE := $(wildcard *.c)

$(SOURCE:.c=.o): SOURCE
        $(CC) -c $^  -o $@

является стандартным правилом, но у него (возможно) много целей и много зависимостей. Тем не менее, он вызовет $ (CC) только один раз.

21
27.01.2020, 20:00

Теги

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