`
xiaoer_1982
  • 浏览: 1820862 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于code::blocks的配置文件

阅读更多

快乐虾

http://blog.csdn.net/lights_joy/

lights@hb165.com

本文适用于

codeblocks-8.02

vs2008

欢迎转载,但请保留作者信息

code::blocksIDE中的对象分成几类,每类对象都有不同的参数,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;

}

这里persPersonalityManager的一个成员,且可以通过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两个命令行参数来进行配置文件的选择。

1 参考资料

code::blocksvs2008下编译的一个问题(2009-5-3)

codeblocksplugin的实现(2008-9-9)

分享到:
评论

相关推荐

    集成开发C语言编译器:Code::Blocks

    Code::Blocks是一个强大的...支持多种文件类型:Code::Blocks不仅支持自身的工程文件、C/C++文件,还支持多种其他文件类型,如AngelScript、批处理、CSS文件、D语言文件等。 灵活的配置:Code::Blocks具有灵活而强大

    Code::Blocks 8.02 GCC 4.40 汉化包

     Code::Blocks具有灵活而强大的配置功能,除支持自身的工程文件、C/C++文件外,还支持AngelScript、批处理、CSS文件、D语言文件、Diff/Patch文件、Fortan77文件、GameMonkey脚本文件、 Hitachi汇编文件、Lua文件、...

    Code::Blocks中文教程.rar

    2. Code::Blocks的编程环境配置…………….……….…………7 2.1 环境………...…………..…………7 2.2 编辑器…………………….…………….….…………....12 2.3 编译器和调试器.……….……….13 3. 编写...

    CodeBlocks 17.12 汉化补丁-v5.2.6

    本人亲自手动汉化的 Code::Blocks 17.12 正式版汉化包。 1.延续了上一版本16.01汉化包,所以本汉化包同样能使用在16.01版本上。 2.该汉化包将编译器配置的汉化单独抽取出来汉化,避免上一版本汉化包汉化后不能修改...

    Code Blocks

     Code::Blocks具有灵活而强大的配置功能,除支持自身的工程文件、C/C++文件外,还支持AngelScript、批处理、CSS文件、D语言文件、Diff/Patch文件、Fortan77文件、GameMonkey脚本文件、Hitachi汇编文件、Lua文件、...

    Code Blocks 8.02 带mingw

    Code:: Blocks支持插件,目前的插件包括代码格式化工具AStyle、代码分析器、类向导、代码补全、代码统计、编译器选择、复制字符串到剪贴板、调试器、文件扩展处理器、Dev-C++ DevPak更新/安装器、DragScroll、源码...

    CodeBlocks 17.12 汉化补丁-v5.2.6-疯狂的诅咒

    本人亲自手动汉化的 Code::Blocks 17.12 正式版汉化包。 1.延续了上一版本16.01汉化包,所以本汉化包同样能使用在16.01版本上。 2.该汉化包将编译器配置的汉化单独抽取出来汉化,避免上一版本汉化包汉化后不能修改...

    CodeBlock教程

    本书主要论述一款开源、免费、跨平台的集成开发环境Code::Blocks的安装、配置、以及程序的调 试和编译等。Code::Blocks支持十几种常见的编译器,安装后占用较少的硬盘空间,个性化特性十分丰 富,功能十分强大,而且...

    code_blocks主题配置文件

    code_blocks主题配置文件,可将code_blocks代码高亮,背景颜色改变

Global site tag (gtag.js) - Google Analytics