我附上了make文件的样本。
# SELECT TARGET OPERATING SYSTEM
override OS = LINUX
#OS = WINDOWS
CC = gcc
SRC_DIR = src
INC_DIR = inc
OBJ_DIR = obj
CFLAGS = -c -Wall -I$(INC_DIR)
# CONDITIONAL COMPILATION
ifeq ($(OS), "WINDOWS")
SERIAL = Winsrcfile
CLEAR = cls
endif
ifeq ($(OS), "LINUX")
SERIAL = Linsrcfile
CLEAR = clear
endif
我正在努力实现这一目标......
make OS=WINDOWS // compile for windows
或
make OS=LINUX // compile for linux
来自linux shell或windows命令提示符,如果在执行' make'时未指定操作系统,则默认为linux。但ifeq在两种情况下都返回false,产生错误'没有规则来制作目标'。我读过override directive& conditional syntax但似乎我没有清楚地了解它。我已经尝试了条件语法的每种替代语法。但是在条件中得到错误的语法无效。停止'
答案 0 :(得分:1)
Make不区分引号。你应该做的是:
$(OS)
这里实际做的是扩展参数然后按字面比较。 LINUX
扩展为变量的值,LINUX
扩展为make OS='"Linux"'
。例如,您的示例需要{{1}}才能工作