热卖商品
新闻详情
cmd批量编译 - CSDN
来自 : CSDN技术社区
发布时间:2021-03-24
最近有一个需求,一个目录下有N多个.c文件,想办法把它们全部编译。
用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_FILEstatic char THIS_FILE[] = __FILE__;#endif// The one and only application objectCWinApp 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文件的目录下,运行就可以了。效果很让人满意。 收起 展开全文
本文链接: http://weiku1248802.immuno-online.com/view-703254.html
发布于 : 2021-03-24
阅读(0)
最新动态
2021-03-24
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-24
2021-03-25
2021-03-25
2021-03-25
2021-03-25