最近我开始学习linux上的cpp语言,现在我使用以下命令运行一个cpp文件。
g++ -o xxx xxx.cpp
./xxx
有没有办法使它成为一行命令,例如compile-and-run xxx.cpp
?谢谢。
答案1
Jeremy Banks 发帖称最棒的技巧之一我在 SO 上见过很长时间了。基本上,他正在添加一个cpp 文件顶部的 Bash-Script 行,这使他可以直接编译并执行该文件。
//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";cc -o "$x" "$0")&&exec "$x" "$@"
此解释摘自要点:
//
因为我们不希望在 C 中看到它,所以我们将其放在注释中。
&>/dev/null
不幸的是,
//
它被解释为无效的 shell 命令并产生错误消息,因此我们需要将其重定向到以/dev/null
摆脱它。;x="${0%.*}"
这将通过使用字符串替换来删除当前文件名上的任何扩展名来确定我们的编译文件名。
;[ ! "$x" -ot "$0" ]||
这将检查是否已存在比源文件更新的编译版本。如果没有...
(rm -f "$x";cc -o "$x" "$0")
...我们删除任何现有版本,然后使用我们选择的编译文件名编译我们的代码。
&&exec "$x" "$@"
如果编译成功或者不需要,则将执行传递给已编译的代码,并传递给该脚本的参数。
这种技术称为通晓多种语言的人,这意味着它是用多种语言编写的,并且也可以被那些语言解释器毫无问题地解释。
答案2
这个怎么样??
g++ -o xxx xxx.cpp && ./xxx
(
意味着&&
它会等到第一个任务完成,&
意味着它会在启动第一个任务后立即启动第二个任务,你不想要这个。)
答案3
创建如下 Makefile:
xxx: xxx.cpp
g++ -o xxx xxx.cpp
run: xxx
./xxx
然后只需输入make run
。当然,您的 Makefile 可以比这更复杂,这只是一个简单的示例。重要的是“run”子句。
答案4
你可以编写一个脚本。例如:
#!/bin/bash
g++ -o $1 $1.cpp
./$1
然后使其可执行chmod u+x script.sh
并调用它script.sh yourcode
(省略 cpp 或更改脚本)。