如何计算Makefile中文件的行数?

时间:2019-09-21 00:33:30

标签: bash makefile

我有一个Makefile,其中有一个文本文件和一定数量。我想比较该文本文件中的行数,以查看它是否等于或大于该数,但是使用wc bash命令没有成功。

我尝试在文本文件上使用wc,但是$(wc -l <​​filename.txt)始终为空,从而使ifeq($(wc -l <​​filename.txt),number))错误输出。我已经尝试过将bash语法用于if语句,但这也不起作用。

例如

Self

对所有这些变量(从TEST到TEST3)执行@echo $(值TEST)会导致输出为空。

我还尝试将文本文件中的行数放入另一个文本文件中(例如,linecount.txt中单行显示“ 30”)。然后,我尝试将文件内容存储到变量中,以便可以将其与数字进行比较,但这没有用,因为我无法在开头定义变量。

有什么建议吗?这可能吗,还是我必须单独编写脚本?如果可能的话,希望在Makefile中完成。

2 个答案:

答案 0 :(得分:0)

首先,您应该指定需要GNU make的语法(您对ifeq的引用是唯一的线索)。

回到您的实际问题,gmake本身没有wc函数。您要尝试执行的是执行外部命令。您可以使用shell函数来做到这一点:

TEST=    $(shell wc -l < missing_test_line_count.txt)

在BSD中,通过!=分配实现相同的功能:

TEST!=   wc -l < missing_test_line_count.txt

答案 1 :(得分:0)

要将外壳作为GNUMakefile中变量扩展的一部分运行,您需要使用shell函数:

TEST:=$(shell wc -l < missing_test_line_count.txt)
在Makefile中读取此行时,

将运行有问题的命令,并将TEST设置为结果。您也可以使用

TEST=$(shell wc -l < missing_test_line_count.txt)

它将在每次扩展$(TEST)变量时运行命令。

请注意,此功能(和一般功能)是GNUMake扩展。普通品牌不支持这样做。