0

我正在为嵌入式 C 代码库开发一个自动构建和持续集成环境。我使用 Keil 的 Real View Compiler(windows 可执行文件)作为交叉编译器,并且正在使用 Cygwin 构建整个持续集成环境。

Keil 的文档说,如果使用 Cygwin,则必须为编译器(即 Windows 可执行文件)适当地设置 CYGPATH 环境变量,以了解包含文件等内容的 Cygwin 路径。(http://www.keil.com/support/man/docs/ARMINTRO/armintro_pge1362395716635.htm

makefile 看起来像这样:

INCLUDE_DIR=-I$(PATH_TO_KEIL)/MDK-Middleware \
            -I$(PATH_TO_KEIL)/ARM 


a.o : a.c
    echo
    echo Compiling $<....;
    echo cc -c $(INCLUDE_DIR) -o a.o a.c ;
    cc -c $(INCLUDE_DIR) -o a.o  a.c ;

当我 $cc -c -I/cygdrive/c/Keil_v5/MDK-Middleware -I/cygdrive/c/Keil_v5/ARM -o a.o a.c 直接在 Cygwin 终端上执行时,交叉编译成功。

但是,尽管将 PATH_TO_KEIL 定义为 /cygdrive/c/Keil_v5 ,但在运行 makefile 编译器时会抱怨它找不到包含文件。(即存在于 /cygdrive/c/Keil_v5/ARM 或 C:\Keil_v5 中的文件)

此外,如果它有帮助,如果我给出包含文件的相对路径,我运行交叉编译没有问题。

4

1 回答 1

0

您必须在 Makefile 中声明 var ,它将指向您的包含目录。例如,

INCLUDE_DIR = c:/path/to/include/因此您的 makefile 目标将是:

$armcc.exe -I$(INCLUDE_DIR) foo.c

于 2015-09-28T19:21:28.060 回答