QT BUG:overriding recipt for target XXX.o makefile debug

在工程中重复使用添加已有文件添加类后出现该bug

解决方法:在Pro文件中删除多余的文件

/code/be900v2/Iplatform/build$ make PRODUCT_NAME=be900v2 iplatform_package/busybox/{compile,install} V=s openssl support zlib make[1]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[2]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[2]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[2]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' package/Makefile:133: warning: overriding recipe for target 'package/busybox/clean' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/clean' package/Makefile:133: warning: overriding recipe for target 'package/busybox/download' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/download' package/Makefile:133: warning: overriding recipe for target 'package/busybox/prepare' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/prepare' package/Makefile:133: warning: overriding recipe for target 'package/busybox/compile' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/compile' package/Makefile:133: warning: overriding recipe for target 'package/busybox/install' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/install' package/Makefile:133: warning: overriding recipe for target 'package/busybox/update' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/update' package/Makefile:133: warning: overriding recipe for target 'package/busybox/refresh' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/refresh' package/Makefile:133: warning: overriding recipe for target 'package/busybox/prereq' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/prereq' package/Makefile:133: warning: overriding recipe for target 'package/busybox/dist' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/dist' package/Makefile:133: warning: overriding recipe for target 'package/busybox/distcheck' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/distcheck' package/Makefile:133: warning: overriding recipe for target 'package/busybox/configure' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/configure' make[3]: Entering directory '/home/tplink/code/be900v2/Iplatform/packages/private/common' make[3]: Leaving directory '/home/tplink/code/be900v2/Iplatform/packages/private/common' make[3]: Entering directory '/home/tplink/code/be900v2/Iplatform/packages/opensource/busybox' make[3]: Nothing to be done for 'compile'. make[3]: Leaving directory '/home/tplink/code/be900v2/Iplatform/packages/opensource/busybox' make[3]: Entering directory '/home/tplink/code/be900v2/prplos/platform/feeds/public/prplos-v3.1.0/feed_openwrt/busybox/busybox' make[3]: Nothing to be done for 'compile'. make[3]: Leaving directory '/home/tplink/code/be900v2/prplos/platform/feeds/public/prplos-v3.1.0/feed_openwrt/busybox/busybox' make[2]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[1]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[1]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[2]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[3]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[2]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[2]: Entering directory '/home/tplink/code/be900v2/Iplatform/openwrt' package/Makefile:133: warning: overriding recipe for target 'package/busybox/clean' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/clean' package/Makefile:133: warning: overriding recipe for target 'package/busybox/download' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/download' package/Makefile:133: warning: overriding recipe for target 'package/busybox/prepare' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/prepare' package/Makefile:133: warning: overriding recipe for target 'package/busybox/compile' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/compile' package/Makefile:133: warning: overriding recipe for target 'package/busybox/install' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/install' package/Makefile:133: warning: overriding recipe for target 'package/busybox/update' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/update' package/Makefile:133: warning: overriding recipe for target 'package/busybox/refresh' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/refresh' package/Makefile:133: warning: overriding recipe for target 'package/busybox/prereq' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/prereq' package/Makefile:133: warning: overriding recipe for target 'package/busybox/dist' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/dist' package/Makefile:133: warning: overriding recipe for target 'package/busybox/distcheck' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/distcheck' package/Makefile:133: warning: overriding recipe for target 'package/busybox/configure' package/Makefile:133: warning: ignoring old recipe for target 'package/busybox/configure' make[3]: Entering directory '/home/tplink/code/be900v2/Iplatform/packages/opensource/busybox' make[3]: Nothing to be done for 'install'. make[3]: Leaving directory '/home/tplink/code/be900v2/Iplatform/packages/opensource/busybox' make[3]: Entering directory '/home/tplink/code/be900v2/prplos/platform/feeds/public/prplos-v3.1.0/feed_openwrt/busybox/busybox' make[3]: Nothing to be done for 'install'. make[3]: Leaving directory '/home/tplink/code/be900v2/prplos/platform/feeds/public/prplos-v3.1.0/feed_openwrt/busybox/busybox' make[2]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt' make[1]: Leaving directory '/home/tplink/code/be900v2/Iplatform/openwrt'
11-21
C:/Qt/Qt5.12.12/Tools/mingw730_32/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory 'D:/test/build-ModbusSlave-Desktop_Qt_5_12_12_MinGW_32_bit-Debug' Makefile.Debug:119: warning: overriding recipe for target 'debug/qrc_Resource.cpp' Makefile.Debug:111: warning: ignoring old recipe for target 'debug/qrc_Resource.cpp' C:\Qt\Qt5.12.12\5.12.12\mingw73_32\bin\uic.exe ..\modbus-slave-master\mainwindow.ui -o ui_mainwindow.h g++ -c -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -W -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SERIALPORT_LIB -DQT_SERIALBUS_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\modbus-slave-master -I. -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtWidgets -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtGui -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtANGLE -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtSerialPort -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtSerialBus -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtCore -Idebug -I. -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\mkspecs\win32-g++ -o debug\main.o ..\modbus-slave-master\main.cpp g++ -c -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -W -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SERIALPORT_LIB -DQT_SERIALBUS_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\modbus-slave-master -I. -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtWidgets -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtGui -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtANGLE -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtSerialPort -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtSerialBus -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\include\QtCore -Idebug -I. -IC:\Qt\Qt5.12.12\5.12.12\mingw73_32\mkspecs\win32-g++ -o debug\mainwindow.o ..\modbus-slave-master\mainwindow.cpp mingw32-make[1]: *** No rule to make target '../modbus-slave-master/images/application-exit.png', needed by 'debug/qrc_Resource.cpp'. Stop. mingw32-make[1]: *** Waiting for unfinished jobs.... mingw32-make[1]: Leaving directory 'D:/test/build-ModbusSlave-Desktop_Qt_5_12_12_MinGW_32_bit-Debug' mingw32-make: *** [Makefile:38: debug] Error 2 13:35:19: 进程"C:\Qt\Qt5.12.12\Tools\mingw730_32\bin\mingw32-make.exe"退出,退出代码 2 。 Error while building/deploying project ModbusSlave (kit: Desktop Qt 5.12.12 MinGW 32-bit) When executing step "Make" 13:35:19: Elapsed time: 00:05.
07-30
PRODUCT_COPY_FILES device/amlogic/common/products/mbox/gms/7.1-32bit-stock-20180821/etc/permissions/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml ignored. PRODUCT_COPY_FILES device/amlogic/common/products/mbox/gms/7.1-32bit-stock-20180821/etc/permissions/android.software.app_widgets.xml:system/etc/permissions/android.software.app_widgets.xml ignored. PRODUCT_COPY_FILES frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml ignored. No private recovery resources for TARGET_DEVICE p201 build/core/base_rules.mk:319: warning: overriding commands for target `out/target/product/p201/root/verity_key' build/core/base_rules.mk:319: warning: ignoring old commands for target `out/target/product/p201/root/verity_key' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:711: warning: overriding commands for target `cos_tables.c' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:711: warning: ignoring old commands for target `cos_tables.c' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:711: warning: overriding commands for target `cos_fixed_tables.c' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:711: warning: ignoring old commands for target `cos_fixed_tables.c' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:711: warning: overriding commands for target `sin_tables.c' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:711: warning: ignoring old commands for target `sin_tables.c' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `cbrt_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `cbrt_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `aacps_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `aacps_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `aac_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `aac_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `dv_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `dv_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `sinewin_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `sinewin_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `mpegaudio_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `mpegaudio_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `motionpixels_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `motionpixels_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `pcm_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `pcm_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `qdm2_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `qdm2_tables.h' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/lib/hw/audio.huitong.default.so' build/core/base_rules.mk:319: warning: ignoring old commands for target `out/target/product/p201/system/lib/hw/audio.huitong.default.so' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/bin/remotecfg' build/core/base_rules.mk:319: warning: ignoring old commands for target `out/target/product/p201/system/bin/remotecfg' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/usr/keylayout/Generic.kl' build/core/Makefile:34: warning: ignoring old commands for target `out/target/product/p201/system/usr/keylayout/Generic.kl' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/lib/libfbaudio.so' build/core/base_rules.mk:319: warning: ignoring old commands for target `out/target/product/p201/system/lib/libfbaudio.so' Starting build with ninja ninja: Entering directory `.' ninja: error: unknown target 'mm', did you mean 'wm'? build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed make: *** [ninja_wrapper] Error 1 #### make failed to build some targets (24 seconds) #### 如何解决
08-14
<think> 我们正在处理Makefile中的警告:"overriding recipe for target 'xxx'"和"ignoring old recipe for target 'xxx'",其中xxx是'@echo'和'ERROR'。根据引用[1][2][3][4][5],这个问题是由于在Makefile中重复定义了同一个目标(target)导致的。在Makefile中,同一个目标只能有一个recipe(即命令部分),如果多次定义,后面的会覆盖前面的,并产生警告。 引用[4]特别指出: (1) Makefile中允许存在同名的目标,但执行时会报警告,且靠后的同名目标会覆盖前面的同名目标。覆盖的规则是保留前一个目标的依赖关系,但丢弃前一个目标的命令,使用后一个目标的命令。 因此,解决这个问题的根本方法是消除重复的目标定义。 根据用户描述,警告涉及的目标是'@echo'和'ERROR'。这里有一个关键点:在Makefile中,目标通常是文件名或伪目标(例如all, clean等)。而'@echo'和'ERROR'看起来像是命令或者错误标签,但它们被当作了目标(target)来定义。 可能的原因: 1. 用户可能错误地将命令(如echo)作为目标(target)写在规则中。 2. 用户可能定义了多个同名的伪目标(例如,多次定义`@echo`或`ERROR`作为目标)。 然而,目标名中通常不会包含'@'符号,因为'@'在Makefile的命令部分用于抑制命令回显。所以,很可能是用户错误地书写了规则,导致本应是命令的部分被当成了目标。 例如,错误的写法可能是: @echo: @echo "Something" 然后在别处又写了: @echo: @echo "Something else" 或者,对于'ERROR'目标,可能是定义了一个处理错误的伪目标,但重复定义了。 另外,引用[2]中的示例显示: 在1.mk中定义了: all: @echo "this is command from 1.mk" 而在makefile中又定义了all目标,所以出现覆盖警告。 因此,我们需要检查Makefile中第14行和第32行(以及可能其他地方)对目标'@echo'和'ERROR'的定义。 解决步骤: 1. 定位重复定义: 打开Makefile,找到第14行和第32行,以及可能其他定义相同目标的地方。 2. 分析目标用途: - 如果'@echo'是一个误写的目标,那么应该修改规则,确保命令部分只在规则体内出现,而不是作为目标名。 - 如果'ERROR'是一个伪目标(例如用于错误处理),那么确保在整个Makefile中只定义一次。 3. 合并或删除重复定义: - 如果多次定义是必要的(比如在包含多个Makefile的情况下),考虑使用模式规则、条件判断或者将命令写成函数来避免重复。 - 如果重复定义是错误,删除多余的定义。 4. 使用伪目标声明: 对于伪目标(例如clean, all等),应该使用`.PHONY`来声明,但这并不能解决重复定义问题,但可以优化Makefile。 5. 检查包含关系: 如果Makefile包含了其他文件(使用`include`指令),那么可能是包含的文件和当前文件定义了相同的目标。需要检查并确保同一个目标只定义一次。 具体到用户的警告(目标为'@echo'和'ERROR'),由于这两个目标名比较特殊,我们需要考虑: - '@echo':这个目标名包含'@',可能是书写错误。通常,我们不会用'@'开头作为目标名。可能的情况是,用户本意是想写一个命令,却不小心将它写在了目标的位置。 例如,错误写法: @echo: # 这里本应是命令,却成了目标 ... 正确写法应该是将`@echo`作为命令,放在规则体内,目标应该是其他名字。 - 'ERROR':可能是用户自定义的伪目标,用于错误处理。如果重复定义,需要合并。 示例修正: 假设原Makefile中有如下重复定义: 第14行: @echo: @echo "Hello" 第32行: @echo: @echo "World" 则会出现覆盖警告。修正方法:删除其中一个,或者重新设计规则,避免同名目标。 另外,对于'ERROR'目标: 第14行: ERROR: @echo "Error occurred!" 第32行: ERROR: @exit 1 同样会出现覆盖警告。需要合并两个定义,或者只保留一个。 建议: 1. 检查第14行和第32行附近的规则,确认这两个目标定义的上下文。 2. 如果确实需要两个不同的操作,考虑使用不同的目标名,例如: ERROR1: ... ERROR2: ... 3. 如果两个定义是同一个意图,那么合并它们。 另外,引用[5]提到在Qt编译时出现类似警告,通常是由于qmake生成的Makefile和自定义规则冲突。如果用户使用了类似Qt的构建系统,可能需要检查自动生成的文件和自定义规则是否冲突。 总结:解决该警告的关键是消除重复定义的目标。 操作步骤: 1. 打开Makefile,定位到14行和32行。 2. 检查这两个位置定义的目标名(即冒号前面的单词)是否为`@echo`和`ERROR`。 3. 查看整个Makefile中是否还有其他地方定义了相同的目标。 4. 修改或删除重复定义。 注意:目标名中不应该包含'@'(除非有特殊需求),所以'@echo'很可能是一个书写错误。正确的做法是,目标名应该是合法的标识符(一般由字母、数字、下划线组成,不含特殊符号)。 如果用户无法修改这两行(例如,因为它们是自动生成的),那么可能需要考虑是否可以通过调整包含顺序或使用条件判断来解决。 由于用户没有提供具体的Makefile内容,我们只能给出一般性建议。 如果用户提供更多信息,我们可以给出更具体的修改方案。 相关问题: 1. 如何正确编写Makefile规则以避免目标重复? 2. Makefile中伪目标(.PHONY)的作用和使用方法? 3. 如何处理Makefile中包含多个文件导致的规则冲突? 4. Makefile中特殊字符(如@、-)在规则中的正确用法? </think> ### 解决Makefile中"overriding recipe for target"警告的方法 根据引用文献[1][3][4],**目标重复定义**是导致该警告的根本原因。在 Makefile 中,同一目标只能有一个规则(recipe),如果出现重复定义: 1. 后定义的规则会覆盖先定义的规则 2. 前一个规则的命令被丢弃(但依赖关系保留) 3. 生成警告信息: ``` Makefile:行号: warning: overriding recipe for target '目标名' Makefile:行号: warning: ignoring old recipe for target '目标名' ``` #### 📍 针对您的问题(涉及`@echo`和`ERROR`目标) **原因分析:** 1. `@echo`目标重复定义(第14行和第32行) 2. `ERROR`目标重复定义(位置未指定) 3. 可能的原因: - 同一Makefile中多次定义相同目标(引用[3][4]) - 包含的子Makefile中有冲突定义(引用[2]) - 自动生成规则冲突(Qt项目常见,引用[5]) #### 🔧 解决方法步骤: 1. **合并重复规则** ```makefile # 错误示例(重复定义) @echo: @echo "First message" @echo: dependency # 第32行 @echo "Second message" # 覆盖前一个 # 正确做法:合并为一个规则 @echo: dependency @echo "First message" @echo "Second message" ``` 2. **使用伪目标声明** ```makefile .PHONY: @echo ERROR # 声明为伪目标 @echo: # 第14行 @echo "Custom echo command" ERROR: # 错误处理目标 @echo "Error occurred"; exit 1 ``` 3. **处理包含冲突(若来自子Makefile)** ```makefile # 主Makefile include sub1.mk # 明确覆盖子文件中的定义 @echo: @echo "Overridden implementation" # 或禁用子文件中的定义 SUB_DEFINITIONS = no # 通过变量控制 include sub2.mk ``` 4. **Qt项目特殊处理(引用[5])** ```bash # 清理自动生成的文件 make distclean # 重新生成Makefile qmake -makefile ``` #### ️ 关键注意事项: 1. **目标命名规范**: - 避免使用特殊符号开头(如`@`),改用`echo_target`等有意义名称 - `ERROR`建议改为`error-handling`等明确名称 2. **依赖关系保留规则**(引用[4]): ```makefile # 前一个目标的依赖会被保留 target: dep1 # 该依赖会被保留 # 命令被丢弃 target: dep2 # 最终实际执行 @echo "Actual command" # 等价于:target: dep1 dep2 ``` 3. **调试建议**: ```bash make -n # 空运行显示所有命令 make -p # 打印所有规则和变量定义 ``` #### ✅ 验证修复效果 修复后警告应消失,且行为符合预期: ```bash $ make @echo # 输出合并后的消息 $ make ERROR # 执行错误处理逻辑 ``` > **经验提示**:在大型项目中,使用`include`指令时,建议在子Makefile中使用`ifndef GUARD_VARIABLE`条件判断防止重复包含(引用[2][5])。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值