如何批量编译连接程序?
2012-07-23 21:42
375 查看
最近有一个需求,一个目录下有N多个.c文件,想办法把它们全部编译。
用VC建个工程把它们全扔进去构建是不行的,连接的时候会出错,因为VC最后只想生成一个exe文件,这样最后只能得到一堆obj文件。
后来知道了VC的编译器是cl.exe(如果你的cmd不识别cl,请查看这篇文章:http://blog.csdn.net/wangningyu/article/details/4830920,设置环境变量),可以在命令行中使用,然而用它也不能一个cl *.*完事,结果还是和上面一样,link不了,只能一次让它编译连接一个文件,而那么多文件我不可能手动一个一个地输入回车。于是我想只要写个程序遍历这个目录下所有.c文件然后调用命令行让cl编译不就行了?
于是做了这样一个程序:
用VC建个工程把它们全扔进去构建是不行的,连接的时候会出错,因为VC最后只想生成一个exe文件,这样最后只能得到一堆obj文件。
后来知道了VC的编译器是cl.exe(如果你的cmd不识别cl,请查看这篇文章:http://blog.csdn.net/wangningyu/article/details/4830920,设置环境变量),可以在命令行中使用,然而用它也不能一个cl *.*完事,结果还是和上面一样,link不了,只能一次让它编译连接一个文件,而那么多文件我不可能手动一个一个地输入回车。于是我想只要写个程序遍历这个目录下所有.c文件然后调用命令行让cl编译不就行了?
于是做了这样一个程序:
// use.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "use.h" #include <cstdlib> #include <cstring> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { // TODO: code your application's behavior here. CFileFind finder; BOOL bWorking = finder.FindFile("*.c"); while (bWorking) { bWorking = finder.FindNextFile(); char szTemp[MAX_PATH]; sprintf(szTemp, "cl %s", finder.GetFilePath()); // cout << szTemp << endl; system(szTemp); // 调用命令行 } } return nRetCode; }把这个程序放到存放.c文件的目录下,运行就可以了。效果很让人满意。
相关文章推荐
- PROC程序如何编译时不需要连接数据库校验?
- 如何在Windows下编译连接C程序
- Android如何防止apk程序被反编译
- Android如何防止apk程序被反编译
- iOS开发那些事-如何编译iOS程序
- 如何反编译一个android程序二
- 如何在 静态编译的QT 5.5.1 中 使用数据库插件连接 ODBC(调用静态插件)
- Android如何防止apk程序被反编译
- Android如何防止apk程序被反编译
- Linux下编写C++程序连接mysql数据库编译时指定头、库
- 【VBS教程】:VBS简介及如何编译VBS程序等
- java程序在单机情况下如何连接本机,如何做自连网线接口
- Android如何防止apk程序被反编译
- 手把手教你如何编写、编译汇编程序
- 如何将 exe程序和vb编译的exe文件 封装为一个exe文件
- 支付1000元咨询费,如何让PB编写的程序不能被反编译?
- Android如何防止apk程序被反编译
- [Golang]如何在golang程序中自动获取编译时间的方法
- ubuntu 64上的GCC如何编译32位程序
- VC 程序中如何用ADO连接SQL Server 2005?