首页 > 代码库 > jmake 编译当前目录所有c/c++单文件
jmake 编译当前目录所有c/c++单文件
在一个目录下写一些单文件的c或者c++文件时,每次敲出命令如g++ a.cpp -o a感觉比较麻烦。
所以就模仿makefile的功能,实现了扫描当前目录,并将所有c文件、cc文件、cpp文件直接调用gcc/g++编译。
本程序的缺点之一就是不能用于文件间有相互include的情况,因为要扫描代码include了其他什么文件比较麻烦。而且不能在编译命令中加入其他库的选项。
使用方式:
1 jmake
源代码:
1 /* 2 * author: huanglianjing 3 * 4 * this is a program to compile all single c/c++ file of current directory 5 * 6 * usage: jmake 7 */ 8 9 #include <stdio.h>10 #include <stdlib.h>11 #include <unistd.h>12 #include <dirent.h>13 #include <string.h>14 #include <sys/stat.h>15 16 int main()17 {18 struct dirent *entry;19 struct stat statbuf;20 21 DIR *dp = opendir(".");22 while ((entry=readdir(dp)) != NULL) {23 lstat(entry->d_name,&statbuf);24 if (!S_ISDIR(statbuf.st_mode)) {25 char fname[57], ename[57], instruction[207];26 strcpy(fname,entry->d_name);27 strcpy(ename,entry->d_name);28 int len = strlen(fname);29 if (len>=3 && fname[len-1]==‘c‘ && fname[len-2]==‘.‘) {//.c30 ename[len-2] = ‘\0‘;31 sprintf(instruction,"gcc %s -o %s",fname,ename);32 printf("%s\n",instruction);33 system(instruction);34 }35 else if (len>=4 && fname[len-1]==‘c‘36 && fname[len-2]==‘c‘ && fname[len-3]==‘.‘) {//.cc37 ename[len-3] = ‘\0‘;38 sprintf(instruction,"g++ %s -o %s",fname,ename);39 printf("%s\n",instruction);40 system(instruction);41 }42 else if (len>=5 && fname[len-1]==‘p‘ && fname[len-2]==‘p‘43 && fname[len-3]==‘c‘ && fname[len-4]==‘.‘) {//.cpp44 ename[len-4] = ‘\0‘;45 sprintf(instruction,"g++ %s -o %s",fname,ename);46 printf("%s\n",instruction);47 system(instruction);48 }49 }50 }51 closedir(dp);52 return 0;53 }
jmake 编译当前目录所有c/c++单文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。