关于Makefile的几个问题

关于Makefile的几个问题,makefile,Makefile,问题1 如果您定义步骤 22 clean: 23 rm $(OBJECTS) 如果有什么方法可以优雅地“什么都不做,如果没有什么可以删除” 问题2 再次假设下面这一行,当处理该行时找不到任何文件时,有没有一种方法可以优雅地退出并发出警告 6 SOURCES = $(shell echo src/*.cpp) 问题3 如何对最终产品执行最终后处理,如mv$(product)someDir?这条指令会在哪里?1)只要使用rm-f,它告诉rm如果文件丢失,就忽略它 3) 这可能只是

问题1 如果您定义步骤

  22 clean:
  23   rm $(OBJECTS)
如果有什么方法可以优雅地“什么都不做,如果没有什么可以删除”

问题2 再次假设下面这一行,当处理该行时找不到任何文件时,有没有一种方法可以优雅地退出并发出警告

  6 SOURCES = $(shell echo src/*.cpp)
问题3 如何对最终产品执行最终后处理,如
mv$(product)someDir
?这条指令会在哪里?

1)只要使用
rm-f
,它告诉
rm
如果文件丢失,就忽略它


3) 这可能只是实际构建产品的目标的最后一步,或者您可以创建一个名为
install
(例如)的目标,该目标取决于您的构建目标,然后包含此
mv
命令

回答问题#2

SOURCES := $(or $(wildcard src/*.cpp), $(warning No source found in 'src'))
当没有与
src/*.cpp
模式匹配的文件时,这将发出警告<代码>源变量保持为空

请参阅GNU Make手册中相应的