可以在与正在构建的同一 makefile 中执行 C 程序吗?
Posted
技术标签:
【中文标题】可以在与正在构建的同一 makefile 中执行 C 程序吗?【英文标题】:Can a C program be executed, in the same makefile as it is being built? 【发布时间】:2016-04-24 14:45:51 【问题描述】:我有一个构建我的 .C 项目的生成文件,并生成一个可执行文件。我知道这可以从终端使用命令 ./(NAME) 运行。
我的问题是 - 是否可以在 makefile 中实际构建和运行,这样我就可以在终端中键入“make”,程序将被构建和运行,所有这些都来自这个文件& 命令? (无需手动运行可执行文件)。
谢谢:)
【问题讨论】:
是的;这是可能的。 是的,这是可能的。我不太了解makefile,但如果你的主要可执行文件名为test
,你可以这样做:test: $(CC) test.cpp -o test && ./test
【参考方案1】:
不知道你的makefile是什么,但你可以这样做:
PROGARGS=
.PHONY:all run
all:prog
#...
run:all
./prog $(PROGARGS)
【讨论】:
【参考方案2】:是的,可以。
例如:
TARGET=hoge
CC=gcc
.PHONY: compileandrun
compileandrun: $(TARGET)
./$(TARGET)
$(TARGET): $(TARGET).c
$(CC) -o $(TARGET) $(TARGET).c
如果你在可写的当前目录中有这个Makefile
和源代码hoge.c
,程序将被编译并使用make
命令运行。
【讨论】:
【参考方案3】:其他答案都不错;但是,您可以使用这个其他变体(一种快速而肮脏的解决方案)。
假设你的makefile
有这行来构建你的程序:
NAME:
gcc source.c -o NAME
你可以直接在下面添加你的运行命令:
NAME:
gcc source.c -o NAME
./NAME
这与&&
连接的作用相同:它运行第一个命令,如果成功,也运行第二个命令。
【讨论】:
【参考方案4】:只要你正确地排序你的makefile依赖,没有什么能阻止你从makefile运行你的C程序。也就是说,大多数人都希望 makefile 只是构建文件,而不是同时运行它。
我建议只在命令行的一行中编写 make 命令和 run 命令。这样你只需要按一次回车,而不需要在 makefile 本身做任何花哨的事情。如果你的 shell 支持历史补全,下次你想再次构建和运行时,你只需要按“UP”和“ENTER”...
make && ./NAME
如果您真的想将所有内容都放在 makefile 中,我建议在您的 makefile 中创建一个单独的“运行”目标,以减少混淆的可能性,例如 jdarthenay 的 answer。
【讨论】:
以上是关于可以在与正在构建的同一 makefile 中执行 C 程序吗?的主要内容,如果未能解决你的问题,请参考以下文章