Linux Bash:覆盖make文件中的路径
我正在创建一个bash脚本,它使用arm的gcc的本地副本。我需要有多个版本的gcc周围的兼容性。我的bash脚本正确下载二进制文件,在本地设置路径,但make文件忽略本地版本 阅读一些文档后,我发现bash脚本中有一个Linux Bash:覆盖make文件中的路径,linux,bash,makefile,Linux,Bash,Makefile,我正在创建一个bash脚本,它使用arm的gcc的本地副本。我需要有多个版本的gcc周围的兼容性。我的bash脚本正确下载二进制文件,在本地设置路径,但make文件忽略本地版本 阅读一些文档后,我发现bash脚本中有一个export-e OPTION=VALUE,它将覆盖make default路径 这在我的bash本地副本中运行得很好,但是当通过circle测试服务器运行它时,它失败了,说-e是无效的选项 有人知道更好的方法来覆盖make中的路径吗?特别是对于我无法更改make文件的第三方项目
export-e OPTION=VALUE
,它将覆盖make default路径
这在我的bash本地副本中运行得很好,但是当通过circle测试服务器运行它时,它失败了,说-e
是无效的选项
有人知道更好的方法来覆盖make中的路径吗?特别是对于我无法更改make文件的第三方项目
GCC_ARM_VER=gcc-arm-none-eabi-4_8-2014q2
export -e GCC_ARM_PATH=$BINDIR/gcc-arm-embedded/$GCC_ARM_VER/bin
export PATH=$GCC_ARM_PATH:$PATH
make all -s -C "$BASE_FIRMWARE/"firmware APPDIR="$CWD/firmware" TARGET_DIR="$CWD/bin" PLATFORM="$1" || exit
然后在make文件(arm tools.mk)中:
为了澄清Jonathan所说的,您不想使用
export-e
,也不想使用make-e
,也不需要修改makefile。如果希望变量赋值优先,只需将其添加到make命令行:
GCC_ARM_VER=gcc-arm-none-eabi-4_8-2014q2
export PATH=$GCC_ARM_PATH:$PATH
make all -s -C "$BASE_FIRMWARE/"firmware \
APPDIR="$CWD/firmware" TARGET_DIR="$CWD/bin" PLATFORM="$1" \
GCC_ARM_PATH="$BINDIR/gcc-arm-embedded/$GCC_ARM_VER/bin" \
|| exit
为了澄清Jonathan所说的,您不想使用
export-e
,也不想使用make-e
,也不需要修改makefile。如果希望变量赋值优先,只需将其添加到make命令行:
GCC_ARM_VER=gcc-arm-none-eabi-4_8-2014q2
export PATH=$GCC_ARM_PATH:$PATH
make all -s -C "$BASE_FIRMWARE/"firmware \
APPDIR="$CWD/firmware" TARGET_DIR="$CWD/bin" PLATFORM="$1" \
GCC_ARM_PATH="$BINDIR/gcc-arm-embedded/$GCC_ARM_VER/bin" \
|| exit
我想你误读了
make
手册。正如这里所说的,-e
是make
选项,而不是export
选项。回到您的问题-在使用ARM工具.mk
之前,GCC\u ARM\u路径是否设置在ARM工具.mk
的某个位置?如果必须修复某个问题,则在命令行上设置为make
的参数不能被环境或makefile覆盖(在顶级make
)。正常的优先级层次结构(从高到低)是命令行参数、makefile和环境;make-e
选项将其更改为命令行参数、环境、makefile。我认为您误读了make
手册。正如这里所说的,-e
是make
选项,而不是export
选项。回到您的问题-在使用ARM工具.mk
之前,GCC\u ARM\u路径是否设置在ARM工具.mk
的某个位置?如果必须修复某个问题,则在命令行上设置为make
的参数不能被环境或makefile覆盖(在顶级make
)。正常的优先级层次结构(从高到低)是命令行参数、makefile和环境;make-e
选项将其更改为命令行参数、环境、makefile。