0

我不太擅长编写make文件。但是我需要编写一个基于 GNUMAKE 的测试工具。我做了一些研究,但我找不到任何有用的东西。所以我什至不知道从哪里开始。

TEST_SUITE_DIR:=testSuite

#Get all test names with path  & extention
TEST_SCRIPTS_WITH_PATH:=$(wildcard $(TEST_SUITE_DIR)/*.txt)

#Test name with out path and extention
TEST_SCRIPT_NAME:=$(notdir $(patsubst %.txt,%,$(TEST_SCRIPTS_WITH_PATH)))


vpath %.txt $(TEST_SUITE_DIR)


TEST_LOG_FILE:=$(TEST_SCRIPT_NAME)OutPutFile.txt



#This is the program ./bin/programName being tested
PUT:=man

#Test requrements:
#1) Each test in /testSuite dir should have its own logFile
#2) Each testout will be checked against a goldenout file in /goldenOutput dir to see
#   if the expected resuls match with the test output
#   #3) If the test & golden output file hasnt been modified, we do not want to run that test so
#   we can save time
#   #4) STDERR should be redirected to a stderr.log
#5) During the regression, if a test failed, test name should be written into the regressionReport.log

.PHONY: clean test

test:
        for i in $(TEST_SCRIPTS_WITH_PATH); do \
              echo $$i; \
              $(PUT) `head -n 1 $$i` > $$iOutPutFile.txt; \
        done

#$(foreach i, $(TEST_SCRIPTS_WITH_PATH), $(PUT) `head -n 1 $($i)` > $($i)OutPutFile.txt )
#$(PUT) `head -n 1 $(TEST_SCRIPTS) ` > $(TEST_SCRIPTS)logFile.log


clean:
        rm -f *.d $(OBJ_DIR)/*.o $(PROG)


-include *.d

这是我的 dataFile.txt(目前,我只是想让 1 个命令正常工作),

date 
4

2 回答 2

1

我不确定我是否理解你想要做什么,为什么你需要依赖于测试规则(特别是你把它弄假了)。

此外,如果你想测试文件的内容,你需要使用 diff 而不是测试

于 2012-11-10T02:00:45.187 回答
1

makefile 是一种自动执行某些任务的方法,因此在您知道如何在没有 Make 的情况下如何做之前,您无法使用 Make 做任何事情。

有不止一种方法可以做你想做的事(Make 的常见情况),你应该考虑你希望 makefile 如何扩展。构造该命令的最简单方法可能是:

man `head -n 1 dataFile.txt` > logFile.log

所以这个makefile就足够了:

.PHONY: all

all:
    man `head -n 1 dataFile.txt` > logFile.log

这方面的许多进展是可能的,但直到我们知道你打算在此之外做什么。

于 2012-11-10T14:25:27.943 回答