例如:我想要: 如果file1存在: CLEAN_SRC = *.h file3 其他 CLEAN_SRC =
有人可以解释如何使用if-then语句和Makefiles中的循环? 我似乎无法find任何好例子的文档。
我的生成文件失败,错误: Makefile:34: *** multiple target patterns. Stop. 这是什么意思,我该如何解决这个问题? ( GNU make手册 ,由Obvious上尉编写,没有帮助)。 find了。 我有规则的forms: $(FOO): bar 其中FOO是从shell命令设置的,该命令污染了包含冒号的错误消息。
我有一个makefile结构如下所示: all : compile executable clean : rm -f *.o $(EXEC) 我意识到,在运行“make all”之前,我一直在运行“make clean”,然后在terminal中“清除”。 在尝试筛选讨厌的C ++编译错误之前,我喜欢有一个干净的terminal。 所以我试图添加第三个目标: fresh : rm -f *.o $(EXEC) clear make all 这工作,但是这运行的第二个实例(我相信)。 有没有一个正确的方式来获得相同的function,而无需运行第二个实例?
我认为这是一个多次提出的问题,但我找不到正确的方法。 我有以下结构: project/ project/Makefile project/code project/code/*.cc project/code/Makefile 当我在目录“项目/代码”,并调用“make project_code”我的代码编译正确。 我想这样做,当我在“项目/”,只是调用“make project_code”,就好像我在“项目/代码”。 makefile'project / Makefile'将包含其他规则(比如“install”)和一些编译规则,就好像我在'project / code'中一样。 为此,我要求你的帮助…谢谢。
我阅读了关于Makefiles的一些教程,但是对于我来说目标“all”代表的是什么以及它做了什么还不清楚。 有任何想法吗?
你如何使用make的ifeq操作符执行逻辑OR? 例如,我有(简化): ifeq ($(GCC_MINOR), 4) CFLAGS += -fno-strict-overflow endif ifeq ($(GCC_MINOR), 5) CFLAGS += -fno-strict-overflow endif 但是想巩固这些路线。 (是的,是的,autotools,configuration等等,对于目前的情况来说太沉重了,想把所有的东西放在Makefile里面) [这个问题的逻辑对立: 如何在'ifeq'语句中使用多个条件 ]
我怎么能放弃基于makefile的variables不被设置/赋值的make / makefile执行? 我想出了这个,但只有当调用者没有明确地运行一个目标(即只运行make时才起作用。 ifeq ($(MY_FLAG),) abort: ## This MUST be the first target 🙁 ugly @echo Variable MY_FLAG not set && false endif all: @echo MY_FLAG=$(MY_FLAG) 我觉得像这样的东西是一个好主意,但是在make的手册中没有find任何东西: ifndef MY_FLAG .ABORT endif
在Makefile中, deploy配方需要设置一个环境variablesENV来正确执行自己,而另一些则不关心,例如: ENV = .PHONY: deploy hello deploy: rsync . $(ENV).example.com:/var/www/myapp/ hello: echo "I don't care about ENV, just saying hello!" 我怎样才能确保这个variables设置,例如:是否有一种方法来声明这个makefilevariables作为部署配方的先决条件,如: deploy: make-sure-ENV-variable-is-set ? 谢谢。
有没有一种方法来注释在makefile中的多行,如在C语法/* */ ?