不会从makefile调用CYGPATH

时间:2015-09-28 18:30:10

标签: c makefile cygwin embedded cygpath

我正在为嵌入式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中存在一个)

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

1 个答案:

答案 0 :(得分:0)

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

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

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