我有一个构建我的.C项目的makefile,并生成一个可执行文件。我知道这可以通过终端使用命令./(NAME)来运行。
我的问题是这个 - 是否有可能在makefile中实际构建和运行,这样我就可以在终端中输入'make',并且程序将被构建并运行,所有这一切都来自这个文件&安培;命令? (无需手动运行可执行文件)。
谢谢:)
答案 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。