.PHONY: lint是什么意思
时间: 2023-10-04 12:05:05 浏览: 45
在Makefile中,.PHONY是一种特殊的目标(target),它表示一个伪目标(phony target)。伪目标是指不对应真实的文件名,而只是一个命令的名称。
.PHONY: lint 表示lint是一个伪目标,用于执行lint(代码风格检查)的命令。
使用.PHONY声明伪目标的好处是,即使存在与伪目标同名的文件,也不会影响伪目标的执行。这样可以确保每次运行make lint时,都会执行lint命令,而不会被文件存在与否的情况所干扰。
相关问题:
1. 什么是Makefile?
2. 除了lint以外,还有哪些常用的伪目标?
3. 如何在Makefile中定义和使用伪目标?
4. 为什么使用伪目标可以避免文件存在与否的干扰?
相关问题
CPRE := @ ifeq ($(V),1) CPRE := VERB := --verbose endif .PHONY:startup startup: all all: @echo "Build Solution by $(BOARD) $(SDK) " $(CPRE) scons $(VERB) --board=$(BOARD) --sdk=$(SDK) -j8 @echo YoC SDK Done .PHONY:flashall flashall: $(CPRE) scons --flash=all --board=$(BOARD) --sdk=$(SDK) .PHONY:erasechip erasechip: $(CPRE) scons --flash=erasechip --board=$(BOARD) --sdk=$(SDK) .PHONY:flash flash: $(CPRE) scons --flash=prim --board=$(BOARD) --sdk=$(SDK) .PHONY:clean clean: $(CPRE) rm -rf yoc_sdk binary out yoc.* generated $(CPRE) rm -fr gdbinitflash .gdbinit gdbinit mkflash.sh的makefile文件如何修改可以链接进去-L/usr/lib/x86_64-linux-gnu -lcunit cunit的框架整体代码示例
以下是修改后的 `makefile` 文件示例:
```makefile
CPRE := @
ifeq ($(V),1)
CPRE :=
VERB := --verbose
endif
.PHONY: startup
startup: all
.PHONY: all
all:
@echo "Build Solution by $(BOARD) $(SDK) "
$(CPRE) scons $(VERB) --board=$(BOARD) --sdk=$(SDK) -j8 \
LIBPATH=/usr/lib/x86_64-linux-gnu \
LIBS="cunit" \
$(VERB)
@echo YoC SDK Done
.PHONY: flashall
flashall:
$(CPRE) scons --flash=all --board=$(BOARD) --sdk=$(SDK)
.PHONY: erasechip
erasechip:
$(CPRE) scons --flash=erasechip --board=$(BOARD) --sdk=$(SDK)
.PHONY: flash
flash:
$(CPRE) scons --flash=prim --board=$(BOARD) --sdk=$(SDK)
.PHONY: clean
clean:
$(CPRE) rm -rf yoc_sdk binary out yoc.* generated
$(CPRE) rm -fr gdbinitflash .gdbinit gdbinit
```
这个示例中,在 `all` 目标的编译命令中加入了 `-L/usr/lib/x86_64-linux-gnu -lcunit`,并使用了 `LIBPATH=/usr/lib/x86_64-linux-gnu` 和 `LIBS="cunit"` 指定库文件路径和需要链接的库文件名。这样编译时就会将 CUnit 库链接进去了。
请详细并且通俗易懂的解释 makefile中 make clean 命令的东西,比如.PHONY:clean clean: rm -f *.o $(TARGET),为什么要加 .PHONY:clean
"make clean"是一个在Makefile中使用的命令,通常用于删除项目生成的临时文件。
".PHONY: clean"的作用是告诉make这个"clean"不是一个文件名,而是一个伪目标。在这里,".PHONY"指的是非文件目标,也就是说不是一个文件,而是一个任务。
"clean:"命令后面的"rm -f *.o $(TARGET)"表示删除所有后缀名为".o"和$(TARGET)的文件,其中$(TARGET)是一个预定义的变量,代表目标文件的名称。
这么做的目的是为了清理掉项目编译过程中产生的临时文件,使项目重新保持一个干净的状态,方便后续的编译和打包。