CodeBlocks编译器配置续
Posted CrazyEngineer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeBlocks编译器配置续相关的知识,希望对你有一定的参考价值。
继续探讨上一篇的问题,之前提到,我手贱把 gcc 的安装目录移动了之后, CodeBlocks 检测不到安装的gcc,即使在 CodeBlocks 中按照新的目录配置后,仍旧提示原先的路径找不到。推测肯定是 gcc 的安装程序往 Windows 的注册表里面写入了路径相关的信息。但是去注册表中搜索 gcc 关键词,并没有找到相关的项。于是陷入了窘境,一筹莫展......
我去 gcc 的文件夹翻了一下,发现里面有个 install.exe 和 install.c
抱着试一试的心态,点击运行 install.exe,然后再去CodeBlocks 里面按照相应路径配置,如图
再点击 Auto-detect ,然后配置成功,nice 完美。
附那个 install.c 文件的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dir.h>
#include <windows.h>
#include <winreg.h>
void shortcut(char *gccpath,int to) {
char command[800];
sprintf(command,"shortcut \"%s\\jfe.exe\" %d \"%s\"",gccpath,to,gccpath);
system(command);
}
void Error(void)
{
TCHAR szBuf[80];
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
printf("Failed with error %d: %s",
dw, lpMsgBuf);
// MessageBox(NULL, szBuf, "Error", MB_OK);
LocalFree(lpMsgBuf);
}
int main(int argc,char *argv[]) {
char cwd[256],winpath[256],gccbin[300];
char command[800];
char shortpath[256];
chdir("gcc");
chdir("bin");
getcwd(cwd,256);
strcpy(gccbin,cwd);
if(GetShortPathName(gccbin,shortpath,256))
strcpy(gccbin,shortpath);
else
Error();
printf("Installing to %s\n",gccbin);
GetWindowsDirectory(winpath,256);
shortcut(gccbin,1);
shortcut(gccbin,2);
shortcut(gccbin,3);
if(RegSetValue(HKEY_CLASSES_ROOT,"gccbinpath",REG_SZ,gccbin,strlen(gccbin)))
puts("Failed to set registry entry");
sprintf(command,"copy \"%s\\gcc.exe\" \"%s\" > NUL",gccbin,winpath);
system(command);
return 0;
}
技术的道路上,时常会遇到一些奇奇怪怪的Bug,这个时候需要淡定,抱着我能解决的心态面对,有时候,说不定就突然想到办法了。
以上是关于CodeBlocks编译器配置续的主要内容,如果未能解决你的问题,请参考以下文章