Chr*_*fer 15 makefile switch-statement
我正在尝试使用更新的构建系统; 目前,我正试图找到一种根据目标平台设置编译器和标志的好方法.
我想做的是像
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
...
Run Code Online (Sandbox Code Playgroud)
这是GNU Make不支持的.现在,我的第一个想法就是做
-include $(PLATFORM)_$(BUILD_TYPE)
Run Code Online (Sandbox Code Playgroud)
这是一个相当不错的解决方案,然而,它很难概述文件之间的差异,更不用说我期待编写和维护一个好的60-80文件,每个文件包含一组变量定义.
有没有人碰巧知道更好的方法来实现这一目标?即根据另一个变量设置一组标志和其他选项?
Mar*_*ork 24
怎么样:
CFLAGS_Linux_x86_release = -O3
CFLAGS_Linux_x86_debug = -O0 -g
CFLAGS = ${CFLAGS_${PLATFORM}_${BUILD}}
Run Code Online (Sandbox Code Playgroud)
配置此类参数将是configure脚本的任务.
话虽这么说,您可以查看条件和条件函数的语法.例如,您可以尝试以下操作:
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_release)
CFLAGS = -O3
endif
ifeq ($(PLATFORM)_$(BUILD_TYPE),Linux_x86_debug)
CFLAGS = -O0 -g
endif
Run Code Online (Sandbox Code Playgroud)
git使用的Makefile是Makefile 的一个很好的例子,它在 Makefile 本身中执行非平凡的配置任务(例如切换主机类型)。它实际上非常可读并且使用起来相当简单。
| 归档时间: |
|
| 查看次数: |
18316 次 |
| 最近记录: |