Почему Makefile неправильно разрешает переменные?

Как исправить запись "$(wildcard $(SRC_DIR)/*.c)" так, чтобы она корректно выводила список файлов в терминале? В текущем виде она ошибочно разделяется на "$(wildcard $(SRC_DIR))" и "$(wildcard /*.c)". В консоли выводится следующее: "Путь к исходникам: src/brick_game/tetris".
  • 22 июля 2024 г. 20:32
Ответы на вопрос 2
Проблема возникает из-за того, что переменная $(wildcard) в Makefile интерпретируется прежде, чем разворачиваются переменные внутри нее. В данном случае переменная $(SRC_DIR) не разворачивается в нужном месте для корректной работы функции $(wildcard).

Чтобы исправить эту проблему, необходимо использовать функцию wildcard без переменной внутри нее и объединить две переменные в одну строку перед использованием функции wildcard. Примерно так:

```Makefile
SRC := $(SRC_DIR)/*.c

all:
    @echo "Путь к исходникам: $(SRC)"
```

Таким образом, переменная $(SRC) будет правильно сформирована перед использованием функции $(wildcard) и вывод списка файлов будет корректным.
SRC_DIR := src/brick_game/tetris # Папка с исходным кодом

вот из этой строки нужно убрать все пробелы после слова tetris. Потому что иначе они попадают в переменную SRC_DIR . Комментарий можно оставить только впритык
Похожие вопросы