如何在 C++ Eclipse 项目中定义自定义构建命令而不是 "make all"?

How can I define custom build command instead of "make all" in a C++ Eclipse projects?

我将现有的 make 文件项目导入到 eclipse 中。我想用自定义 make 参数而不是像 make test 这样的 make all 来编译代码。如何将这些不同的 make 调用添加到 Eclipse Luna 中的项目?

在任何项目中,您通常都有主文件 "makefile." 您必须编辑此文件。

如果您查看主生成文件,您会发现类似这样的内容:

all: #usually with dependencies.

这是一个制作规则,要制作自己的规则,只需按相同的方式添加即可:

test: #some command or dependency.

然后当你做测试时,它会按照你的要求去做。

查看更多示例并更好地理解 makefile 规则。
GNU Make

这里有一些在 eclipse 中制作新文件的东西,如果你还没有看过的话。
makefile in Eclipse

您可以创建一个外部工具来运行您能想到的任何命令行命令。只需单击 图标附近的箭头和 select "External Tools Configurations"。

来自http://help.eclipse.org/luna/topic/org.eclipse.cdt.doc.user/getting_started/cdt_w_import.htm?cp=10_1_3

打开项目属性(右键单击项目资源管理器视图中的项目名称,然后在上下文菜单底部的 select 属性上)。

在 C/C++ 构建页面的构建器设置选项卡上,取消选中使用默认构建命令并将 make 命令更改为 make -f hello.mak 或您需要的任何命令。

URaoul 的回答帮助我找到了另一个答案。 (更新: 后来发现比我的答案更正确的是"Build Configurations")

有一个菜单命令"Make Targets"。您可以在菜单中找到它:Project/Make Targes。或者您只需按 "Shift-F9".

因此您需要创建一个或几个目标。所以对于我的 makefile:

.PHONY: all test autotest

all: program

program: main.o
    $(CXX) $(LDFLAGS) -o $@ $^
test:
    ./program

autotest:
    echo "Autotests"
    ./program
    echo "Autotests completed"

clean:
    rm *.o program

我在 "Make target" 中创建了三个目标:

其中一个是 "run my autotests",它有一个自定义构建命令:

其中一个是all,它有一个默认命令: