在一个目录下写一些单文件的c或者c++文件时,每次敲出命令如g++ a.cpp -o a感觉比较麻烦。

所以就模仿makefile的功能,实现了扫描当前目录,并将所有c文件、cc文件、cpp文件直接调用gcc/g++编译。

本程序的缺点之一就是不能用于文件间有相互include的情况,因为要扫描代码include了其他什么文件比较麻烦。而且不能在编译命令中加入其他库的选项。

使用方式:

 jmake

源代码:

 /*
  * author: huanglianjing
  *
  * this is a program to compile all single c/c++ file of current directory
  *
  * usage: jmake
  */

 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <dirent.h>
 #include <string.h>
 #include <sys/stat.h>

 int main()
 {
     struct dirent *entry;
     struct stat statbuf;

     DIR *dp = opendir(".");
     while ((entry=readdir(dp)) != NULL) {
         lstat(entry->d_name,&statbuf);
         if (!S_ISDIR(statbuf.st_mode)) {
             ], ename[], instruction[];
             strcpy(fname,entry->d_name);
             strcpy(ename,entry->d_name);
             int len = strlen(fname);
              && fname[len-]==]=='.') {//.c
                 ename[len-] = '\0';
                 sprintf(instruction,"gcc %s -o %s",fname,ename);
                 printf("%s\n",instruction);
                 system(instruction);
             }
              && fname[len-]=='c'
                     && fname[len-]==]=='.') {//.cc
                 ename[len-] = '\0';
                 sprintf(instruction,"g++ %s -o %s",fname,ename);
                 printf("%s\n",instruction);
                 system(instruction);
             }
              && fname[len-]==]=='p'
                     && fname[len-]==]=='.') {//.cpp
                 ename[len-] = '\0';
                 sprintf(instruction,"g++ %s -o %s",fname,ename);
                 printf("%s\n",instruction);
                 system(instruction);
             }
         }
     }
     closedir(dp);
     ;
 }

最新文章

  1. javascript --- 实时监听输入框值的变化
  2. 如何理解和使用Java package包
  3. Tomcat中的线程池StandardThreadExecutor
  4. SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-004- 处理上传文件
  5. php中获取各种路径
  6. canvas绘图不清晰的解决方案
  7. 【js 实践】js 实现木桶布局
  8. Linux定时器 timerfd使用
  9. Go语言类型(布尔、整型、数组、切片、map等)
  10. 2017-9-7-Linux Mint TFTP服务安装开启
  11. react与fetch
  12. 简单易用的安装文件制作工具NSIS的使用demo示例
  13. 【小白的CFD之旅】19 来自计算网格的困惑
  14. c++ 的makefile文件实例
  15. 改变PS1的颜色
  16. uva 10369 Arctic Network (最小生成树加丁点变形)
  17. Gsteramer 环境配置
  18. qbxt Day1 测试犯傻祭祀
  19. mysql的mysqladmin的用法
  20. Kafka具体解释五、Kafka Consumer的底层API- SimpleConsumer

热门文章

  1. JQuery获取Checkbox组的值
  2. WampServer2.5的XDebug调试不成功的原因
  3. 普通用户登录Oracle DB Control
  4. (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上
  5. mysql 批量更新
  6. js数组的操作&lt;转&gt;
  7. php 日期 - 计算2个日期的差值
  8. Type Correlation
  9. Delphi SysErrorMessage 函数和系统错误信息表
  10. android对应版本号