我正在使用工具链GNUARM-NONE v16.01和手动编写的makefile。我使用gcc选项自动创建文件依赖性(例如,如果.h文件被更改,则将编译所有相应的.c文件)。生成依赖项文件的命令:
# Create c file dependencies
@$(CC) -MM -MP -MF “$(DEP_FILE)” -MT”$(OBJ_FILE)” -MT”$(DEP_FILE)” @”$(CC_OPTIONS)” “$<”
(gcc called with -x c)
# Create assembler file dependencies
@$(CC) -MM -MP -MF “$(DEP_FILE)” -MT”$(OBJ_FILE)” -MT”$(DEP_FILE)” @”$(ASM_OPTIONS)” “$<”
(gcc called with -x assembler)
不幸的是,这仅适用于头文件。如果我有一个内联汇编程序的.c文件,其中包含一个汇编程序包含文件(.inc),则更改该.inc文件不会导致重新编译.c文件:
void test ()
{
asm volatile ( “.include \”test.inc\” \n\t”
.. do some asm stuff here );
}
在汇编程序文件.asm中,使用.include指令包含inc文件。更改.inc文件不会导致重新编译asm文件。如果我将.include指令更改为#include并使用“-x assembler-with-cpp”进行编译,则更改.inc文件会导致重新编译.asm文件。但是内联汇编程序的问题仍然存在,我不能在那里使用#include指令。
因此,似乎自动依赖关系创建仅适用于标准c和#include指令,但不适用于汇编程序和.include指令。
或者如何为汇编程序代码/文件使用自动依赖项生成?