Получить цели make-файла GNU из команды - PullRequest
1 голос
/ 30 марта 2020

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

cat Makefile

command: ## Command description
    @echo "Execution log"

another-command: ## Command description
    @echo "Execution log"

command2: ## Command description
    @echo "Execution log" 

Вывод:

command
command2

Я не понимаю, почему я не получаю команду another-command, это код

`make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\\\/t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}' `;

В чем может быть проблема?

Я пытался с целью решения, но он выдает ошибку:

make -qp | grep '^[a-z0-9-]\+:'

1 Ответ

1 голос
/ 30 марта 2020

в чем может быть проблема?

Проблема в том, что это регулярное выражение:

/^[a-zA-Z0-9][^$#\\\/t=]*:([^=]|$)/

не соответствует именам целей с дефисами (-) в них. Как несвязанный вопрос, awk - это неуклюжий инструмент для того, что вы на самом деле делаете с ним; grep было бы проще использовать:

make -qp | grep '^[a-z0-9-]\+:'

, который производит вывод

command:
command2:
another-command:
...