http://yizhenfei.is-programmer.com/posts/37578.html


环境

Windows 7
Visual Studio 2013
Lua 5.2.1


动机

因为自己比较弱,还不是非常习惯在Vim里看源代码,所以决定还是把阅读Lua源码的事情放在Windows平台上做。Source Insight不错,但是如果可以编译运行自己进行的一些小改动的话,应该能提高自己对代码的理解,因此打算在Visual Studio里读。(其实也有刚刚装了Visual Studio 2013,想尝鲜的缘故。)

官网上对于Windows下编译Lua的指南,最新的也仅是基于Visual Studio 2003了,而且是直接抛出了工程文件,参考意义是有的,但要想拥有灵活性,还是要自己动手,丰衣足食了。


建立项目

Lua的源代码编译后会生成三个对象:Lua库、基于该库的独立解释器以及字节码编译器。所以,在solution中,我们也要建立三个project与他们对应。在这里,暂且称整个solution为lua_vs11,三个project分别为lua_lib、lua、luac,类型都可以选择C++的空项目。

还没有读源代码,这里先按照网上的说法对源代码进行分配,lua.c放在lua项目下,luac.c放在luac项目下,其余的全部都是lua库的代码,扔在lua_lib下。


生成设置

首先,我们要设置lua以及luac依赖于lua_lib,这样可以保证lua_lib最先进行编译。(项目上右键,“项目依赖项”)

其次,我们要让lua以及luac中包含lua头文件的预处理指令正常得到展开。这里采用比较土的方法,是把lua_lib加入到lua以及luac的预处理器搜索目录中。(项目属性,VC++目录,包含目录)

最后,我们要让lua以及luac能够在链接时正常链接到lua_lib上,这里要做三件事:

1.我们要修改lua_lib项目的生成目标为静态库。(项目属性,常规,配置类型)
2.我们要让lua以及luac链接lua_lib.lib库。(项目属性,链接器,输入,附加依赖项)
3.我们要让lua以及luac搜索lua_lib.lib所在目录(即我们的生成目录),以正确的找到该库。(项目属性,链接器,常规,附加库目录)

好了,按下F6生成解决方案吧。: )

对Visual Studio不是很熟悉,用的可能是比较土的方法,如果你有更加好的建议,请一定留言。 : P



转载请保证文章完整性,并请注明来自yizhenfei.is-programmer.com


另附:自己按照上面的方法实践了一下,将可以编译的vs2010工程打个包上传上去,为更懒得同学提供方便一下