代码之家  ›  专栏  ›  技术社区  ›  Andrew Savinykh

使变元

  •  2
  • Andrew Savinykh  · 技术社区  · 14 年前

    我试图在mingw/msys下在windows上编译一个开源项目。

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

    physfs.make包含(除其他外)以下行:

    ifndef CC
      CC = gcc
    endif
    

    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 -e CC=gcc
    

    echo $CC
    

    没有显示任何内容。

    我认为MSYS中的环境变量是如何工作的,这是我不明白的。

    请帮我解决这个问题,好让我明白 简单的“make”命令会抱怨为什么ifndef块没有像我期望的那样工作。

    1 回复  |  直到 14 年前
        1
  •  1
  •   James Eichele Bernard Igiri    14 年前

    CC 是其中之一 implicit variables 在make会话中自动定义,因此 ifndef CC 从未 计算为真。

    echo $CC . MSYS环境没有CC的概念。

    如果要查看make会话中变量的值,可以始终使用 info

    $(info $(CC))
    

    这将在对makefile中的该行求值时,将CC变量的值回显到控制台。