使用Shell脚本编译运行C++源码 输入输出重定向

  在写C++控制台程序的时,如果使用Xcode或者Visual Studio之类的IDE,需要创建许多工程,会造成很多不便。有时,采用Vim或者Sublime text等编辑器编写简单的控制台程序能节省许多时间。但是,在编译时,就必使用命令行编译运行。这时,一个事先编写好的shell脚本能大大缩短调试时间。 

  把下面的代码复制并保存为xxx.sh文件,输入要编译的文件名(不包括后缀)和编译选项(可选),即可运行(Linux或者MacOS系统)。

 1 ##/bin/bash
 2 echo "------------------compile.sh------------------"
 3
 4 name=‘‘
 5 sname=‘‘
 6 option=‘0‘        #0: debug | 1: normal
 7 basepath=$(cd `dirname $0`; pwd)    #获取当前路径
 8
 9 while [[ true ]]; do
10     #statements
11     read name option        #获取输入
12     if [[ sname == ‘‘ && name == ‘‘ ]]; then
13         echo "Error: Wrong input"
14         continue
15     fi
16
17     if [[ -z "$name" ]]; then        #没有输入的时候直接运行
18         echo "------------------runnning------------------"
19         $basepath/$sname.out
20         continue
21     fi
22
23     sname=$name
24
25     if [[ option -eq ‘0‘ ]]; then
26         echo "------------------compiling------------------"
27         if [[ -f "$basepath/$name.out" ]]; then
28             rm -f "$basepath/$name.out"
29         fi
30         g++ -o $basepath/$sname.out -D debug $basepath/$sname.cpp    #编译选项Debug
31         echo "------------------runnning------------------"
32         time $basepath/$sname.out                      #统计运行时间
33     fi
34     if [[ option -eq ‘1‘ ]]; then
35         echo "------------------compiling------------------"
36         if [[ -f "$basepath/$name.out" ]]; then
37             rm -f "$basepath/$name.out"
38         fi
39         g++ -o $basepath/$sname.out $basepath/$sname.cpp
40         echo "------------------runnning------------------"
41         $basepath/$sname.out
42     fi
43 done

  程序在Debug时,不仅可以用#ifdef debug包含各种中间变量的输出,还可以包括输入输出重定向。

#ifdef debug
  freopen("test.in","r",stdin);  freopen("test.out","w",stdout);
#endif

原文地址:https://www.cnblogs.com/SaltyFishQF/p/10288125.html

时间: 2024-08-07 17:24:51

使用Shell脚本编译运行C++源码 输入输出重定向的相关文章

shell脚本:lnmp等源码安装脚本

##脚本功能: # 源码安装dns.nginx.php.memcached.gonet.mysql,并做相关的配置 # ##脚本说明: # ##更新记录: # 1.增加dns.nginx的配置文件 # 2.优化mysql.nginx.dns等安装的部分函数 # 3.增加安装gonet服务的功能函数 -------------------------- #!/bin/bash # by colin on 2016-01-06 # revision on 2016-04-29 ###########

Android系统篇之—-编写简单的驱动程序并且将其编译到内核源码中【转】

本文转载自:大神 通过之前的一篇文章,我们了解了 Android中的Binder机制和远程服务调用 在这篇文章中主要介绍了Android中的应用在调用一些系统服务的时候的原理,那么接下来就继续来介绍一下如何通过编译Android源码来手动添加一个系统服务,让编译之后的Android系统中存在我们的这个服务,每个应用都可以调用.但是本文得先介绍一下如何编写一个简单的驱动程序,先介绍了驱动程序,然后在通过JNI让framework层访问这个驱动程序,在通过注册服务来封装这个功能,最后在把这个服务添加

Android系统篇之----编写简单的驱动程序并且将其编译到内核源码中

通过之前的一篇文章,我们了解了 Android中的Binder机制和远程服务调用 在这篇文章中主要介绍了Android中的应用在调用一些系统服务的时候的原理,那么接下来就继续来介绍一下如何通过编译Android源码来手动添加一个系统服务,让编译之后的Android系统中存在我们的这个服务,每个应用都可以调用.但是本文得先介绍一下如何编写一个简单的驱动程序,先介绍了驱动程序,然后在通过JNI让framework层访问这个驱动程序,在通过注册服务来封装这个功能,最后在把这个服务添加到系统中,实现上层

编译Android系统源码和内核源码

好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现最近的脑子不够用了,今天写点什么呢?就把我之前编译Android系统源码和内核源码的过程记录一下,因为这个过程真的是受益匪浅,看重的不是结果,主要是过程,在这个过程中,我感觉最大的收获就是学习的耐心和毅力,因为在这个过程中那个问题就像是雨点似的天天打在你的脸上,虽然现在网上有很多文章介绍怎么去操作,但是我说句真心话,那些只能提供参考,因为你的工作环境毕竟和他不一样,所以等你按照他的步骤去操作的时候还是会遇到很多问题,当然我写这篇文章

Android系统篇之----编写系统服务并且将其编译到系统源码中

在之前已经介绍了一篇关于如何编写简单的驱动以及访问该驱动的小程序,最后将程序编译到Android内核源码中通过程序访问驱动验证是可以通过的,那么本文就继续这个知识点,把这个驱动程序通过JNI连接创建一个系统服务,提供给上层应用访问改服务功能,可以看到前一篇介绍驱动程序的功能是属于内核层的,而本文介绍的内容是Framework层的知识. 声明:本文内容参考罗升阳的书籍:<Android系统源代码情景分析> 如果想了解更详细的内容非常建议购买此书 非常感谢罗神的这本书,给我带来很多未知的知识,大神

Android系统篇之—-编写系统服务并且将其编译到系统源码中【转】

本文转载自:http://www.wjdiankong.cn/android%E7%B3%BB%E7%BB%9F%E7%AF%87%E4%B9%8B-%E7%BC%96%E5%86%99%E7%B3%BB%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%B9%B6%E4%B8%94%E5%B0%86%E5%85%B6%E7%BC%96%E8%AF%91%E5%88%B0%E7%B3%BB%E7%BB%9F%E6%BA%90%E7%A0%81/ 在之前已经介绍了一篇关于 如何编写简单的

FW 编译Android系统源码和内核源码

编译Android系统源码和内核源码 分类: Android2014-07-21 20:58 7287人阅读 评论(28) 收藏 举报 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现最近的脑子不够用了,今天写点什么呢?就把我之前编译Android系统源码和内核源码的过程记录一下,因为这个过程真的是受益匪浅,看重的不是结果,主要是过程,在这个过程中,我感觉最大的收获就是学习的耐心和毅力,因为在这个过程中那个问题就像是雨点似的天天打在你的脸上,虽然现在网上有很多文章介绍怎么去操作,

【转】编译Android系统源码和内核源码

原文网址:http://blog.csdn.net/jiangwei0910410003/article/details/37988637 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现最近的脑子不够用了,今天写点什么呢?就把我之前编译Android系统源码和内核源码的过程记录一下,因为这个过程真的是受益匪浅,看重的不是结果,主要是过程,在这个过程中,我感觉最大的收获就是学习的耐心和毅力,因为在这个过程中那个问题就像是雨点似的天天打在你的脸上,虽然现在网上有很多文章介绍怎么去操

使用VS2005安装和编译QT4.53源码

学习Qt,当然是QT4好.可是装了4.86以后,网上下载的书中的例子大多无法直接用VS执行(个人不喜欢用QT Creator),即打开pro转换的时候出错(我也懒的研究为什么出错了).看了一下发布时间,觉得4.53时间比较合适,是2009年末发布的.也许能运行书上的例子. 因为很懒,所以不想编译QT源代码,最好装上就能用.所以下载了qt-win-opensource-4.5.3-mingw.exe,安装报错,说找不到mingw.所以又下了MinGW-5.1.4.exe,这是个在线安装版本,我非常