参数传递和条件执行在make中不起作用



我已经附上了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

如果在执行"make"时未指定操作系统,则从linuxshell或windows命令提示符,并希望默认为linux。但在这两种情况下,ifeq都返回false,生成一个错误"No rule to make target"。我读了override指令&条件语法,但我似乎还不清楚。我已经尝试了条件语法的每一种替代语法。但是在条件中获取错误的无效语法。停止

Make不区分引号。你应该做的是:

ifeq ($(OS),LINUX)
# do stuff
endif

实际上,这里所做的是对论点进行扩展,然后从字面上进行比较。CCD_ 1扩展到变量的值并且CCD_ 2扩展到CCD_。例如,您的示例需要make OS='"Linux"'才能使用

最新更新