Mingw和变量

时间:2010-10-27 01:18:36

标签: c makefile mingw gnu

我正在尝试在mingw / msys下的Windows上编译一个开源项目。

makefile包含(以及其他)此行

@${MAKE} --no-print-directory -C . -f physfs.make

physfs.make包含(以及其他)这些行:

ifndef CC
  CC = gcc
endif

当我运行make时,我收到以下错误:

Creating obj/Debug/physfs
physfs.c
make[1]: cc: Command not found
make[1]: *** [obj/Debug/physfs/physfs.o] Error 127
make: *** [physfs] Error 2

如果我评论ifndef / endif对,使CC = gcc保持不变,则构建工作正常。如果不是make我发出这个命令:

make -e CC=gcc

构建也可以。但是当我在msys中运行以下命令时:

echo $CC

没有显示任何内容。

我认为环境变量在MSYS中的工作方式有一些基础,并使我不理解。

可以请一些人帮我解决这个问题,所以我可以理解为什么简单的'make'命令抱怨以及为什么ifndef块不能正常工作。

1 个答案:

答案 0 :(得分:1)

CC是在make会话中自动定义的多个implicit variables之一,因此行ifndef CC 永远不会评估为true。

这解释了为什么在echo $CC的命令行上看不到任何内容。 MSYS环境没有CC的概念。

如果您想在make会话中查看变量的值,您可以随时使用info函数:

$(info $(CC))

这会在评估makefile中的那一行时将CC变量的值回显到控制台。