我正在尝试使用更新的构建系统;目前,我正在努力寻找一种设置编译器和放大器的好方法。标志取决于目标平台。
我想做的是像
switch $(PLATFORM)_$(BUILD_TYPE)
case "Linux_x86_release"
CFLAGS = -O3
case "Linux_x86_debug"
CFLAGS = -O0 -g
case "ARM_release"
CC = armcc
AR = armlink
CFLAGS = -O2 -fx
...
GNU Make不支持。现在,我的第一个想法是做到
-include $(PLATFORM)_$(BUILD_TYPE)
这是一个相当不错的解决方案,然而,它很难概述文件之间的差异,更不用说我期待写作&维护一个好的60-80个文件,每个文件包含一组变量定义。
有没有人碰巧知道更好的方法来实现这一目标?即根据另一个变量设置一组标志和其他选项?
答案 0 :(得分:21)
怎么样:
CFLAGS_Linux_x86_release = -O3
CFLAGS_Linux_x86_debug = -O0 -g
CFLAGS = ${CFLAGS_${PLATFORM}_${BUILD}}
答案 1 :(得分:6)
配置此类参数将是configure
脚本的任务。
话虽如此,您可以查看conditionals和conditional functions的语法。例如,您可以尝试以下操作:
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_release)
CFLAGS = -O3
endif
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_debug)
CFLAGS = -O0 -g
endif
答案 2 :(得分:3)
答案 3 :(得分:2)
切换到为您执行此操作的系统(automake / autoconf)可能更简单......