首页 > 解决方案 > 带有 % 的 Makefile 目标模式

问题描述

我是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 $<

标签: makefilegnu-maketarget

解决方案


我发现了这个问题。我已将目标“StartUnitTest”更改为以下内容,它现在正在工作。删除了回声消息。

StartUnitTest: $(TEST_OBJS)

谢谢疯狂科学家。“make -d”确实帮助我找到了问题。


推荐阅读