jmake 编译当前目录所有c/c++单文件
2024-08-25 06:30:14
在一个目录下写一些单文件的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); ; }
最新文章
- javascript --- 实时监听输入框值的变化
- 如何理解和使用Java package包
- Tomcat中的线程池StandardThreadExecutor
- SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-004- 处理上传文件
- php中获取各种路径
- canvas绘图不清晰的解决方案
- 【js 实践】js 实现木桶布局
- Linux定时器 timerfd使用
- Go语言类型(布尔、整型、数组、切片、map等)
- 2017-9-7-Linux Mint TFTP服务安装开启
- react与fetch
- 简单易用的安装文件制作工具NSIS的使用demo示例
- 【小白的CFD之旅】19 来自计算网格的困惑
- c++ 的makefile文件实例
- 改变PS1的颜色
- uva 10369 Arctic Network (最小生成树加丁点变形)
- Gsteramer 环境配置
- qbxt Day1 测试犯傻祭祀
- mysql的mysqladmin的用法
- Kafka具体解释五、Kafka Consumer的底层API- SimpleConsumer