Запустить скрипт перед компиляцией в Makefile - PullRequest
0 голосов
/ 26 марта 2010

в Makefile, у меня есть:

all: $(PROG)

$(PROG): $(CPP_OBJS)
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

Я бы хотел добавить скрипт перед компиляцией, поэтому я попробовал:

all: $(PROG)

$(PROG): $(CPP_OBJS)
        sh script.sh ; $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

но это не работает.

Как правильно запустить скрипт в этом случае перед компиляцией?

Спасибо

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Поместите выполнение скрипта в отдельную строку.

$(PROG): $(CPP_OBJS)
        sh script.sh
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

Это потому, что make довольно глуп и не понимает точки с запятой так, как вы хотите. Хорошо, что переводы строки дешевы!

0 голосов
/ 26 марта 2010

Я думаю, вы могли бы просто использовать несколько целей, но скрипт не запустится, если вместо цели в качестве цели используется $ (PROG).

all: $(SCRIPT) $(PROG)

$(SCRIPT):
        sh myScript.sh

$(PROG): $(CPP_OBJS)
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

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

$(PROG): $(CPP_OBJS)
        sh myScript.sh
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...