Makefile Target Pattern с% - PullRequest
       37

Makefile Target Pattern с%

0 голосов
/ 06 июня 2018

Я новичок в makefile.Все, что я хочу, это когда конкретный файл C будет изменен, я хочу выполнить одну команду.И, наконец, из одной папки, любой файл C будет изменен, тогда я хочу запустить ту же команду с этим именем файла..eg

ceedling test:filename

У меня есть простой файл с именем unittest.mk.Я не уверен, что следующий подход является правильным или нет.Я запускаю следующую команду для запуска этого файла.

make -f unittest.mk StartUnitTest

Вот файл unittest.mk:

TEST_OBJS += \
    D:\ModApp\Apps\Paymark\ModApp_Paymark\build\test\out\test_txn_admin.o

D:\ModApp\Apps\Paymark\ModApp_Paymark\build\test\out\test_txn_admin.o: D:\ModApp\Apps\Paymark\ModApp_Paymark\test\test_txn_admin.c
    echo $(*F)
    echo $@
    echo $<

StartUnitTest:
    @echo Start Unit Test
    $(TEST_OBJS)
    @echo End Unit Test

Когда я запускаю этот файл, он выдает следующую ошибку:

Start Unit Test
D:\ModApp\Apps\Paymark\ModApp_Paymark\build\test\out\test_txn_admin.o
D:\ModApp\Apps\Paymark\ModApp_Paymark\build\test\out\test_txn_admin.o
process_begin: CreateProcess(D:\ModApp\Apps\Paymark\ModApp_Paymark\build\test\out\test_txn_admin.o, D:\ModApp\Apps\Paymark\ModApp_Paymark\build\test\out\test_txn_admin.o, ...) failed.
make (e=193): Error 193
make: *** [StartUnitTest] Error 193

Наконец, когда это сработает, на самом деле я хочу целевой шаблон с% следующим образом:

D:\ModApp\Apps\Paymark\ModApp_Paymark\build\test\out\%.o: D:\ModApp\Apps\Paymark\ModApp_Paymark\test\%.c
    echo $(*F)
    echo $@
    echo $<

1 Ответ

0 голосов
/ 07 июня 2018

Я нашел проблему.Я изменил цель «StartUnitTest» на следующую, и теперь она работает.Удалены эхо-сообщения.

StartUnitTest: $(TEST_OBJS)

Спасибо, MadScientist.«make -d» помог мне найти проблему.

...