makefile - 带有 % 的 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 $<
解决方案
我发现了这个问题。我已将目标“StartUnitTest”更改为以下内容,它现在正在工作。删除了回声消息。
StartUnitTest: $(TEST_OBJS)
谢谢疯狂科学家。“make -d”确实帮助我找到了问题。