[英]Bash/Python to gather several paths to one and replacing the file name by '*' character
[英]Bash: Overriding paths in a make file
我正在创建一个bash脚本,该脚本使用gcc的本地副本作为arm。 我需要具有多个版本的gcc以获得兼容性。 我的bash脚本正确下载了二进制文件,在本地设置了路径,但make文件忽略了本地版本。
阅读一些文档后:使用环境变量,我发现bash脚本有一个export -e OPTION=VALUE
,它将覆盖make的默认路径。
这在我的bash本地副本中效果很好,但是通过循环测试服务器运行它时失败了,并说-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)中:
# Define the compiler/tools prefix
GCC_PREFIX ?= arm-none-eabi-
include $(COMMON_BUILD)/common-tools.mk
AR = $(GCC_ARM_PATH)$(GCC_PREFIX)gcc-ar
#
# default flags for targeting ARM
#
# C compiler flags
CFLAGS += -g3 -gdwarf-2 -Os -mcpu=cortex-m3 -mthumb
# C++ specific flags
CPPFLAGS += -fno-exceptions -fno-rtti -fcheck-new
CONLYFLAGS +=
ASFLAGS += -g3 -gdwarf-2 -mcpu=cortex-m3 -mthumb
LDFLAGS += -nostartfiles -Xlinker --gc-sections
...
为了弄清乔纳森所说的话,您不想使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.