makefile文件名参数

问题描述 投票:0回答:2

我记得在我的高级C ++类中这样做,但是已经过去了两年,我忘记了。

我想制作一种简单的可重复使用的makefile,我只要在其中输入“ make programName”,它就会将programName.cpp编译为programName.exe。

我已经找了几个小时,但还没有找到我需要的东西。我知道这将被标记为重复,但至少可以指出我需要的内容。

c++ linux makefile
2个回答
0
投票

为什么要在输出后缀.exe?这是Windows约定,在Linux等POSIX系统上不遵循。

如果您不希望甚至根本不需要makefile。您可以键入不带makefile的make programName,如果您有文件programName.c,它将通过make的内置规则内置到可执行文件programName中。

Make具有一个名为$(MAKECMDGOALS)的内置变量,其中包含指定为命令行参数的所有目标。

您可以使用它来生成食谱,如下所示:

# Stop if 0 or 2+ targets were specified.
$(if $(filter-out 1,$(words $(MAKECMDGOALS))),$(error Expected one target))

name := $(MAKECMDGOALS)

$(name).exe: $(name).cpp
        g++ $^ -o $@

添加一种自定义编译器可执行文件和标志的方法,留给读者练习。以及在Linux上构建时从目标名称中有条件地删除.exe


0
投票

Make具有一个名为$(MAKECMDGOALS)的内置变量,其中包含指定为命令行参数的所有目标。

© www.soinside.com 2019 - 2024. All rights reserved.