包含带有自动生成的makefile的C头文件的问题

问题描述 投票:1回答:1

我已经开始在基于Eclipse的Xilinx Vitis IDE中开发C语言软件。我的项目组织如下:

-Application
-Drivers
 -drivers
  -Adc
  -Pwm
   -Pwm.c
   -Pwm.h
-Utils
 -Bits.h
 -Maths.h

所有目录,即应用程序,驱动程序和实用程序都通过“链接文件夹”选项链接到工作区中。我能够将Bits.h包含到Pwm.c中的唯一方法是在磁盘上指定Bits.h的完整路径。否则,编译器将报告fatal error: Bits.h: No such file or directory。编译过程由自动生成的具有以下内容的makefile管理:

# Makefile generated by Xilinx.

PROCESSOR = ps7_cortexa9_0
LIBRARIES = ${PROCESSOR}/lib/libxil.a
BSP_MAKEFILES := $(wildcard $(PROCESSOR)/libsrc/*/src/Makefile)
SUBDIRS := $(patsubst %/Makefile, %, $(BSP_MAKEFILES))


ifneq (,$(findstring win,$(RDI_PLATFORM)))
 SHELL = CMD
endif

all: libs
    @echo 'Finished building libraries'

include: $(addsuffix /make.include,$(SUBDIRS))

libs: $(addsuffix /make.libs,$(SUBDIRS))

clean: $(addsuffix /make.clean,$(SUBDIRS))

$(PROCESSOR)/lib/libxil.a: $(PROCESSOR)/lib/libxil_init.a
    cp -f $< $@

%/make.include: $(if $(wildcard $(PROCESSOR)/lib/libxil_init.a),$(PROCESSOR)/lib/libxil.a,)
    @echo "Running Make include in $(subst /make.include,,$@)"
    $(MAKE) -C $(subst /make.include,,$@) -s include  "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" "ASSEMBLER=arm-none-eabi-as" "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS=  -O2 -c" "EXTRA_COMPILER_FLAGS=-mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -nostartfiles -g -Wall -Wextra -g3 -O0"

%/make.libs: include
    @echo "Running Make libs in $(subst /make.libs,,$@)"
    $(MAKE) -C $(subst /make.libs,,$@) -s libs  "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" "ASSEMBLER=arm-none-eabi-as" "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS=  -O2 -c" "EXTRA_COMPILER_FLAGS=-mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -nostartfiles -g -Wall -Wextra -g3 -O0"

%/make.clean: 
    $(MAKE) -C $(subst /make.clean,,$@) -s clean 
clean:
    rm -f ${PROCESSOR}/lib/libxil.a

很明显,我的“解决方案”是不可接受的。因此,我想请教您如何正确解决此问题的建议。预先感谢您的任何建议。

c makefile xilinx xilinx-edk
1个回答
0
投票

您可以将包含路径添加到项目。这些是编译器将在其中搜索包含文件的路径。应当找到包含路径列表中目录之一中的任何包含文件;包含文件时,您无需指定其路径。

在Xilinx环境中如何执行此操作似乎取决于项目的设置方式。

如果是托管make项目:

属性-> C / C ++构建在“工具设置”选项卡中,选择“包含路径”

如果是标准make项目:

属性-> C / C ++包含路径和符号] >>

然后“添加外部包含路径”

请参阅this documentation了解更多详细信息,屏幕截图等。>

注意:我根据文档回答;我自己还没有使用过此IDE。

© www.soinside.com 2019 - 2024. All rights reserved.