从命令行构建 Eclipse Makefile 项目

Posted

技术标签:

【中文标题】从命令行构建 Eclipse Makefile 项目【英文标题】:Build Eclipse Makefile project from command line 【发布时间】:2020-12-23 20:22:02 【问题描述】:

我创建了 Eclipse Makefile c++ 项目,目的是在没有 Eclipse 的情况下构建项目。但是在终端中运行 make 时出现错误:

Makefile:15: *** Build mode  not supported by this Makefile.  Stop.

如何解决这个问题?如果无法使用 make 构建,为什么还需要 Eclipse Makefile?

Makefile 内容:

PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))

OBJS = boiler.o

ifeq ($(BUILD_MODE),debug)
    CFLAGS += -g
else ifeq ($(BUILD_MODE),profile)
    CFLAGS += -O2
else ifeq ($(BUILD_MODE),run)
    CFLAGS += -O2
else ifeq ($(BUILD_MODE),linuxtools)
    CFLAGS += -g -pg -fprofile-arcs -ftest-coverage
    LDFLAGS += -pg -fprofile-arcs -ftest-coverage
else
    $(error Build mode $(BUILD_MODE) not supported by this Makefile)
endif

all:    boiler

boiler: $(OBJS)
    $(CXX) $(LDFLAGS) -o $@ $^

%.o:    $(PROJECT_ROOT)%.cpp
    $(CXX) -c $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -o $@ $<

%.o:    $(PROJECT_ROOT)%.c
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

clean:
    rm -fr boiler $(OBJS)

【问题讨论】:

make BUILD_MODE=linuxtools ? 【参考方案1】:

我不确定您是如何创建 Makefile ...

...但问题显然是您的 Makefile 恰好依赖于变量 "$(BUILD_MODE)" ...

...而且,您运行“make”的方式,BUILD_MODE 没有设置为您的选项之一,或者根本没有设置。

建议:在命令行中输入: make BUILD_MODE=debug

PS:

同样,您可以将 BUILD_MODE 定义为环境变量,例如set BUILD_MODE=debug(DOS 提示符)或export BUILD_MODE-debug(Linux 术语) “BUILD_MODE”不是“必需的”。这只是一个约定。您的“Makefile 生成器”在创建您的特定 makefile 时碰巧添加了。

【讨论】:

@vico:现在一切正常吗?你解决问题了吗? FWIW, BUILD_MODE=debug make 也可以。它的作用是设置 BUILD_MODE 环境变量,将其导出到 make 可执行文件中,然后在运行下一个命令之前将其删除。

以上是关于从命令行构建 Eclipse Makefile 项目的主要内容,如果未能解决你的问题,请参考以下文章

从命令行构建 Eclipse Java 项目

从命令行构建多个 CDT C++ 项目

在 XCode 4.3 中从命令行构建时链接任意库

Eclipse-project to makefile for ant / maven / gradle /

m2eclipse 找不到 Maven 依赖项,找不到工件

在 Eclipse 上导入的 Makefile 项目:未列出的源和未解决的包含项