jmake 编译当前目录所有c/c++单文件
在一个目录下写一些单文件的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);
;
}
jmake 编译当前目录所有c/c++单文件的更多相关文章
- jmake 编译当前目录c/c++单文件 指定文件 可加选项
基础版本的jmake是将所有当前文件夹下的C/C++文件生成单文件编译命令,并且jmake命令不可加选项. 现在做的改进是能在输入命令jmake时加上一些选项了,‘-’开头的选项加入到每个编译单文件的 ...
- 如何手动解析vue单文件并预览?
开头 笔者之前的文章里介绍过一个代码在线编辑预览工具的实现(传送门:快速搭建一个代码在线编辑预览工具),实现了css.html.js的编辑,但是对于demo场景来说,vue单文件也是一个比较好的代码组 ...
- .NET Core单文件发布静态编译AOT CoreRT
.NET Core单文件发布静态编译AOT CoreRT,将.NET Core应用打包成一个可执行文件并包含运行时. 支持Windows, MacOS and Linux x64 w/ RyuJIT ...
- fis入门-单文件编译之文件优化(optimize)
FIS(Front-end Integrated Solution ),是百度的前端集成解决方案.最近几天在研究前端构建的东西,就顺便了解了下,果断各种高大上,可以到FIS官网围观感受一下.如果对fi ...
- # Clion中编译多个cpp(实现单文件编译)
Clion中编译多个cpp(实现单文件编译) 在不做任何配置情况下,Clion工程下只能有一个main()函数,新建多个cpp会导致报main()函数重复定义的错误,所以默认情况下无法在一个工程下编译 ...
- # codeblocks 使用技巧+伪单文件编译
codeblocks 使用技巧+伪单文件编译 shift+F2打开和隐藏左侧工作空间 F2 打开和隐藏下面控制台 CTRL+Shift+c 注释,CTRL+Shift+x取消注释 view->p ...
- [转帖].NET Core单文件发布静态编译AOT CoreRT
.NET Core单文件发布静态编译AOT CoreRT https://www.cnblogs.com/linezero/p/CoreRT.htm .NET Core单文件发布静态编译AOT Cor ...
- 随笔:关于.net core单文件AOT编译
.Net Core单文件发布已经很流畅了(vs已支持图形化操作发布). 但类似Go或者Graalvm JDK的完全事前编译为本地机器码的红能功能,还未发布于.net 6特性中,还处于实验室中. 另外, ...
- javac编译单文件、多文件引入jar包、-cp解决无法加载主类问题
引言:很多人用ide集成开发环境用的多了,对dos命令编译多个java文件或引入jar包都变得陌生了,java不同于其他解释语言,如ruby.php 都有require,直接引入即可运行代码,但ja ...
随机推荐
- for练习--凑法
static void Main14购物卡(string[] args) { //小明单位发了50元的购物卡,他到超市买洗化用品,一是牙刷(5元),二是香皂(2元),三是牙膏(10元)怎么可以正好把五 ...
- 使用PowerShell管理Windows8应用
引子(?): 我从消费者预览版开始使用的win8,大概是因为我年龄不大的缘故,我很快熟悉了这个操作系统并习惯了使用windows8的Modern App.我之前使用过一个叫Windows8 Moder ...
- 更改linux系统提示信息
一个好的习惯会让人终生受益,当然我们做运维也是如此,比如我们在前期维护系统时修改或者删除掉/etc/issue /etc/issue.net这两个文件. 修改和删除的目的是屏蔽系统版本信息,这样是为了 ...
- linux命令——scp
scp linux系统之间基于ssh登录的安全copy文件或者目录.本地[local]—— 远程[remote]{文件} scp local_file remote_username@remote_i ...
- JQuery window、document、 body
我电脑屏幕分辨率:1440 * 900 最大化浏览器,刷新浏览器 alert($(window).width() + "---" + $(window).height()); ...
- SELinux开关导致mysql服务启动不了
http://www.jb51.net/article/36187.htm 网站突然连接不上数据库,于是朋友直接重启了一下服务器.进到cli模式下,执行 service myqsld start 发现 ...
- JVM(Java虚拟机)优化大全和案例实战
堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...
- Ubuntu-升级linux软件源,安装vim/五笔
重装linux后 软件都没了. 这些是要做的: (1):升级软件源 sudo gedit /etc/apt/source.list 打开后ctrl c 下面的源 ##网易的源(163源,无论是不是教 ...
- securecrt在linux与windows之间传输文件(转)
摘自:http://blog.csdn.net/rangf/article/details/6096365 SecureCRT这款SSH客户端软件同时具备了终端仿真器和文件传输功能.比ftp命令方便多 ...
- android-vlc for rtsp build OK
近期研究 rtsp http stream 流获取方式 vlc over live555 是个很不错的选择,当然了 andorid framework av也是支持rtsp http的,相同不错的选 ...