簡體   English   中英

這2段Makefile.am代碼有什么區別?

[英]What's the difference between these 2 pieces of Makefile.am code?

我對使用 autotools 完全陌生,所以這可能是一個愚蠢的問題,但我還是會嘗試。 我有兩塊Makefile.am 除了一個工作正常而另一個工作不正常。

這很好用。

sbin_PROGRAMS = kernel
kernel_SOURCES = \
    src/arch/$(host_cpu)/arch_sysdefs.h \
    src/arch/$(host_cpu)/boot.asm \
    src/arch/$(host_cpu)/cpu.asm \
    src/arch/$(host_cpu)/isr.asm \
    src/kmain.cpp

但這不是。 .asm文件被生成的Makefile完全忽略。

if HOST_CPU_X86
ASM_EXT = .asm
else
ASM_EXT = .S
endif

sbin_PROGRAMS = kernel
kernel_SOURCES = \
    src/arch/$(host_cpu)/arch_sysdefs.h \
    src/arch/$(host_cpu)/boot$(ASM_EXT) \
    src/arch/$(host_cpu)/cpu$(ASM_EXT) \
    src/arch/$(host_cpu)/isr$(ASM_EXT) \
    src/kmain.cpp

我想做的是,我想為我的項目將要支持的某些 CPU 的程序集文件使用不同的后綴。

我還添加了將.asm轉換為 object 文件的必要規則。

.asm.o:
    yasm -f $(YASM_OUT_FMT) $< -o $@

編輯:用echo $(kernel_SOURCES)臨時覆蓋.cpp.o規則顯示 kernel_SOURCES 中的$(ASM_EXT) kernel_SOURCES正確替換。 例如,對於 x86-64 CPU,src/ src/arch/$(host_cpu)/boot$(ASM_EXT)變為src/arch/x86_64/boot.asm ,對於 ARM 等,變為src/arch/arm/boot.S 。另外,設置ASM_EXT來自 autoconf.ac 的變量沒有任何區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM