LibreOffice 生成VS2012工程

来源:互联网 发布:qq邮箱有没有mac版本 编辑:程序博客网 时间:2024/05/16 15:48

生成VS2012解决方案


编译好之后,建议最好可以进入build目录运行以下命令生成Visual Studio 2012的工程:

/opt/lo/bin/make vs2012-ide-integration


但实际我执行的时候并没有产生相应的文件。因此分析了下makefile文件,决定直接运行生成工程文件的命令。首先我是根据上述命令的输出,分析脚本调用的命令,会输出一个错误,表示make无法处理cmd目标,于是在 build 目录的 Makefile 中找到了这个命令的生成宏:

$(1)-ide-integration:
     cd $(SRCDIR) && (LC_MESSAGES=C $(MAKE) cmd="$(MAKE) -npf Makefile.gbuild all" cmd || true) | $(SRCDIR)/bin/gbuild-to-ide --ide $(1)


这个函数大概在346行左右,于是分析这个命令的执行过程,它就是将源代码目录下的 Makefile.gbuild 文件内容直接输出,并导出到 bin/gbuild-to-ide 作为输入,这个文件是一个python文件,于是试图执行以下代码:

/opt/lo/bin/make -npf ../srcDir/Makefile.gbuild all | ../srcDir/bin/gbuild-to-ide --ide vs2012


-npf参数参见make的参数,这个运行之后提示有两个文件找不到:
  • config_host.mk
  • gbuild.mk
于是打开源代码目录下的 Makefile.gbuild,发现它里面的include语句有问题:

include $(BUILDDIR)/config_$(gb_Side).mk

include $(SRCDIR)/solenv/gbuild/gbuild.mk


使用绝对路径修改了这两个包含为:

include /cygdrive/d/LibreOffice/build/config_$(gb_Side).mk

include /cygdrive/d/LibreOffice/srcDir/solenv/gbuild/gbuild.mk


另外,这个路径必须使用 linux 语法,使用windows路径语法将出错。至此,再运行

/opt/lo/bin/make -npf ../srcDir/Makefile.gbuild all | ../srcDir/bin/gbuild-to-ide --ide vs2012


此时它会执行一次 make 操作,但无妨,因此第一次编译已经成功了,所以它会过一遍,但没有实际的内容产生,然后就会出现 Visual Studio 2012的工程了,在 build 目录下。

由于所有的工程都在 LibreOffice.sln 中,所以直接打开不是明智的选择(内含330个工程),更好的方法是打开各个模块下的解决方案,比如 sw 模块下包含一个 sw.sln,这个解决方案仅包含几个与Writer相关的工程,加快解决方案的加载。

生成的VS2012 sln特点



如上图所示,这个工程不是一个正常的VC++工程,而是一个无语言属性的工程,因此它指定了 NMAKE 要执行命令所需要的参数,本质上它依然是通过 Cygwin 来编译代码。因此无法使用这个东西来添加新的文本,如果要对工程添加新的文件,需要修改 Makefile 再编译。
0 0