如何防止 make 重新生成 .gitignore?
How to prevent make from regenerating .gitignore?
我刚开始学习使用 make
,我想用我的 Makefile
生成一个简单的 .gitignore
文件。我尝试编写该文件的各种版本,但 none 似乎按我期望的方式工作。我遇到的主要问题是 .gitignore
文件每次我 运行 make
时都会重新制作,即使什么都没有改变。
这是我尝试过的方法:
".gitignore" :
touch .gitignore
echo 'node_modules' >> .gitignore
每次我 运行 make
时,这都会将 node_modules
重新附加到 .gitignore
。如果 .gitignore
周围没有引号,它会失败并显示错误:make: *** No targets. Stop.
。我尝试添加一个不会改变的虚假依赖项(即 ".gitignore" : Makefile
),但发生了相同的重建。我试过让 .gitignore
依赖于自身,但它只是告诉我循环依赖性已被删除,我得到了相同的行为。我试过使用 GNU make 版本 3.81 和 4.3。
我最终想用 make
生成整个存储库,我不希望文件上的时间戳在 运行 之间改变,因为这会导致 git
出现问题。
引号不是 makefile 中的特殊字符(通常是 speakig)。
这样的规则:
".gitignore" :
告诉 make 你的目标被命名为 ".gitignore"
(包括引号)。由于目录中没有以这种方式命名的文件,make 运行您的规则来生成它。
更改规则以删除引号:
all: .gitignore
.gitignore:
...
它应该会如您所愿地工作。您不能单独使用 .gitignore
的原因是 make 会特别处理以句点开头的目标:这样的目标不能是 makefile 中的默认目标。
我刚开始学习使用 make
,我想用我的 Makefile
生成一个简单的 .gitignore
文件。我尝试编写该文件的各种版本,但 none 似乎按我期望的方式工作。我遇到的主要问题是 .gitignore
文件每次我 运行 make
时都会重新制作,即使什么都没有改变。
这是我尝试过的方法:
".gitignore" :
touch .gitignore
echo 'node_modules' >> .gitignore
每次我 运行 make
时,这都会将 node_modules
重新附加到 .gitignore
。如果 .gitignore
周围没有引号,它会失败并显示错误:make: *** No targets. Stop.
。我尝试添加一个不会改变的虚假依赖项(即 ".gitignore" : Makefile
),但发生了相同的重建。我试过让 .gitignore
依赖于自身,但它只是告诉我循环依赖性已被删除,我得到了相同的行为。我试过使用 GNU make 版本 3.81 和 4.3。
我最终想用 make
生成整个存储库,我不希望文件上的时间戳在 运行 之间改变,因为这会导致 git
出现问题。
引号不是 makefile 中的特殊字符(通常是 speakig)。
这样的规则:
".gitignore" :
告诉 make 你的目标被命名为 ".gitignore"
(包括引号)。由于目录中没有以这种方式命名的文件,make 运行您的规则来生成它。
更改规则以删除引号:
all: .gitignore
.gitignore:
...
它应该会如您所愿地工作。您不能单独使用 .gitignore
的原因是 make 会特别处理以句点开头的目标:这样的目标不能是 makefile 中的默认目标。