Makefile目标模式与%

时间:2018-06-05 23:10:36

标签: makefile gnu-make target

我是makefile的新手。 我想要的是,当一个特定的C文件被更改时,我想运行一个命令。最后从一个文件夹中,任何一个C文件都会被更改,然后我想用该文件名运行相同的命令。 。例如。

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 :(得分:0)

我找到了这个问题。我已将目标“StartUnitTest”更改为以下内容,现在正在运行。删除了回显消息。

StartUnitTest: $(TEST_OBJS)

谢谢MadScientist。 “make -d”确实帮助我找到了问题。