快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
codeblocks-8.02
vs2008
欢迎转载,但请保留作者信息
code::blocks将IDE中的对象分成几类,每类对象都有不同的参数,c::b很自然地考虑用一个xml文件来描述它们,这就是*.conf文件。
当c::b启动时,将读取这个配置文件:
CfgMgrBldr::CfgMgrBldr() : doc(0), volatile_doc(0), r(false)
{
TiXmlBase::SetCondenseWhiteSpace(false);
wxString personality(Manager::Get()->GetPersonalityManager()->GetPersonality());
if(personality.StartsWith(_T("http://")))
{
SwitchToR(personality);
return;
}
cfg = FindConfigFile(personality + _T(".conf"));
if(cfg.IsEmpty())
{
cfg = wxStandardPathsBase::Get().GetUserDataDir() + wxFILE_SEP_PATH + personality + _T(".conf");
doc = new TiXmlDocument();
doc->InsertEndChild(TiXmlDeclaration("1.0", "UTF-8", "yes"));
doc->InsertEndChild(TiXmlElement("CodeBlocksConfig"));
doc->FirstChildElement("CodeBlocksConfig")->SetAttribute("version", CfgMgrConsts::version);
return;
}
SwitchTo(cfg);
}
在默认情况下,personality将是一个叫“default”的字符串,因此下面相当于调用
cfg = FindConfigFile("default.conf");
来查找配置文件的位置。看看这个函数:
wxString CfgMgrBldr::FindConfigFile(const wxString& filename)
{
wxPathList searchPaths;
wxString u(wxStandardPathsBase::Get().GetUserDataDir() + wxFILE_SEP_PATH + filename);
wxString e(::DetermineExecutablePath() + wxFILE_SEP_PATH +filename);
if(::wxFileExists(u))
{
return u;
}
if(::wxFileExists(e))
{
ConfigManager::relo = true;
return e;
}
return wxEmptyString;
}
从这里可以很明显看出,c::b优先查找用户个人目录下的default.conf,比如:
x:\Documents and Settings\开发者\Application Data\codeblocks
如果没有查找到则到codeblock.exe所在的目录查找,如果找不到,c::b将自动创建一个配置文件。
既然可以叫default.conf,那么是否可以使用其它的文件名呢?
“default”这个字符串来自于PersonalityManager::GetPersonality,看看:
const wxString PersonalityManager::GetPersonality()
{
return pers;
}
这里pers是PersonalityManager的一个成员,且可以通过PersonalityManager::SetPersonality更改:
void PersonalityManager::SetPersonality(const wxString& personality, bool createIfNotExist)
{
pers = personality;
}
查找SetPersonality在文件中的位置,可以发现有这样的调用:
void CodeBlocksApp::SetupPersonality(const wxString& personality)
{
if (personality.CmpNoCase(_T("ask")) == 0)
{
CompileTimeAssertion<wxMinimumVersion<2,5>::eval>::Assert(); // just to make sure: wxWidgets 2.4 is dead
const wxArrayString items(Manager::Get()->GetPersonalityManager()->GetPersonalitiesList());
wxSingleChoiceDialog dlg(0, _("Please choose which personality (profile) to load:"),
_("Personalities (profiles)"),
items);
if (dlg.ShowModal() == wxID_OK)
Manager::Get()->GetPersonalityManager()->SetPersonality(dlg.GetStringSelection());
}
else
{
Manager::Get()->GetPersonalityManager()->SetPersonality(personality, true);
}
}
再查SetupPersonality:
int CodeBlocksApp::ParseCmdLine(MainFrame* handlerFrame)
{
// code shamelessely taken from the console wxWindows sample :)
bool filesInCmdLine = false;
#if wxUSE_CMDLINE_PARSER
wxCmdLineParser& parser = *Manager::GetCmdLineParser();
……………………….
if (parser.Found(_T("personality"), &val) ||
parser.Found(_T("profile"), &val))
{
SetupPersonality(val);
}
………………………
#endif // wxUSE_CMDLINE_PARSER
return filesInCmdLine ? 1 : 0;
}
也就是说,可以通过personality或者profile两个命令行参数来进行配置文件的选择。
code::blocks在vs2008下编译的一个问题(2009-5-3)
codeblocks中plugin的实现(2008-9-9)
分享到:
相关推荐
Code::Blocks是一个强大的...支持多种文件类型:Code::Blocks不仅支持自身的工程文件、C/C++文件,还支持多种其他文件类型,如AngelScript、批处理、CSS文件、D语言文件等。 灵活的配置:Code::Blocks具有灵活而强大
Code::Blocks具有灵活而强大的配置功能,除支持自身的工程文件、C/C++文件外,还支持AngelScript、批处理、CSS文件、D语言文件、Diff/Patch文件、Fortan77文件、GameMonkey脚本文件、 Hitachi汇编文件、Lua文件、...
2. Code::Blocks的编程环境配置…………….……….…………7 2.1 环境………...…………..…………7 2.2 编辑器…………………….…………….….…………....12 2.3 编译器和调试器.……….……….13 3. 编写...
本人亲自手动汉化的 Code::Blocks 17.12 正式版汉化包。 1.延续了上一版本16.01汉化包,所以本汉化包同样能使用在16.01版本上。 2.该汉化包将编译器配置的汉化单独抽取出来汉化,避免上一版本汉化包汉化后不能修改...
Code::Blocks具有灵活而强大的配置功能,除支持自身的工程文件、C/C++文件外,还支持AngelScript、批处理、CSS文件、D语言文件、Diff/Patch文件、Fortan77文件、GameMonkey脚本文件、Hitachi汇编文件、Lua文件、...
Code:: Blocks支持插件,目前的插件包括代码格式化工具AStyle、代码分析器、类向导、代码补全、代码统计、编译器选择、复制字符串到剪贴板、调试器、文件扩展处理器、Dev-C++ DevPak更新/安装器、DragScroll、源码...
本人亲自手动汉化的 Code::Blocks 17.12 正式版汉化包。 1.延续了上一版本16.01汉化包,所以本汉化包同样能使用在16.01版本上。 2.该汉化包将编译器配置的汉化单独抽取出来汉化,避免上一版本汉化包汉化后不能修改...
本书主要论述一款开源、免费、跨平台的集成开发环境Code::Blocks的安装、配置、以及程序的调 试和编译等。Code::Blocks支持十几种常见的编译器,安装后占用较少的硬盘空间,个性化特性十分丰 富,功能十分强大,而且...
code_blocks主题配置文件,可将code_blocks代码高亮,背景颜色改变