可以在与构建的同一个makefile中执行C程序吗?

时间:2016-04-24 14:45:51

标签: c makefile

我有一个构建我的.C项目的makefile,并生成一个可执行文件。我知道这可以通过终端使用命令./(NAME)来运行。

我的问题是这个 - 是否有可能在makefile中实际构建和运行,这样我就可以在终端中输入'make',并且程序将被构建并运行,所有这一切都来自这个文件&安培;命令? (无需手动运行可执行文件)。

谢谢:)

4 个答案:

答案 0 :(得分:3)

不知道你是什么文件,但你可以这样做:

PROGARGS=

.PHONY:all run

all:prog

#...

run:all
    ./prog $(PROGARGS)

答案 1 :(得分:1)

是的,它可以。

例如:

TARGET=hoge
CC=gcc

.PHONY: compileandrun
compileandrun: $(TARGET)
    ./$(TARGET)

$(TARGET): $(TARGET).c
    $(CC) -o $(TARGET) $(TARGET).c

如果您的可写当前目录中包含此Makefile和源代码hoge.c,则将使用make命令编译并运行该程序。

答案 2 :(得分:1)

其他答案都很好;但是,您可以使用其他变体(快速而肮脏的解决方案)。

假设您的makefile有这一行来构建您的程序:

NAME:
    gcc source.c -o NAME

您可以直接在下方添加运行命令:

NAME:
    gcc source.c -o NAME
    ./NAME

这与&&连接相同:它运行第一个命令,如果成功,则运行第二个命令。

答案 3 :(得分:0)

只要您正确地对makefile依赖项进行排序,就没有什么能阻止您从makefile运行C程序。也就是说,大多数人都希望makefile只是构建文件,而不是同时运行它。

我建议只在命令行的一行中编写make命令和run命令。这样你只需要输入一次,但不需要在makefile本身做任何花哨的事情。如果你的shell支持历史记录完成,那么下次你想要再次构建和运行时,你只需按下" UP"和"输入" ...

make && ./NAME

如果你真的想把所有内容放在makefile中,我建议你创建一个单独的" run" make文件中的目标,以减少混淆的可能性,例如jdarthenay' answer