如何使用 Visual Studio 2010 构建 Xalan-C?

Posted

技术标签:

【中文标题】如何使用 Visual Studio 2010 构建 Xalan-C?【英文标题】:How do you build Xalan-C with Visual Studio 2010? 【发布时间】:2012-05-27 06:42:06 【问题描述】:

我找不到证明这是可能的。在 40 小时让自己发疯后,我遇到了无法构建本地化项目的情况,该项目应该构建名称不佳的 AllInOne 项目(构建 Xalan-C.lib,natch)所需的头文件。

这个库是严重的软件违规行为,我迫切需要一个答案,因为它是另一个库中的依赖项,我别无选择。

【问题讨论】:

【参考方案1】:

我也为此苦苦挣扎,这是我的秘诀(VS2015,但请查找其他 IDE 的 cmake 文档)

注意,我专门针对 xerces 3.2.3 和 xalan 1.12。使用 git tag 获取你需要的版本

git clone https://github.com/apache/xerces-c.git
cd xerces-c
git checkout v3.2.3
mkdir build
cd build
cmake .. -BVS2015 -G "Visual Studio 14 2015" -A x64 -DCMAKE_BUILD_TYPE=Debug
cd VS2015
devenv xerces-c.sln /Build Debug /Project ALL_BUILD

因为我将它与另一个以某种方式预期事物的构建过程一起使用: (假设您使用 bin/lib 子目录设置了一个名为 XERCESBUILD 的目标目录 env)

copy src\Debug\*.dll %XERCESBUILD%\bin
copy src\Debug\*.lib %XERCESBUILD%\lib

那么对于xalan

git clone https://github.com/apache/xalan-c
cd xalan-c
git checkout Xalan-C_1_12_0
mkdir build
cd build
set PATH=%PATH%;%XERCESBUILD%\bin
cmake .. -BVS2015 -G "Visual Studio 14 2015" -A x64 -DCMAKE_PREFIX_PATH=%JBCRELEASEDIR% -DXALAN_DEBUG=1 -DCMAKE_BUILD_TYPE=Debug -DXerce
sC_LIBRARY_DEBUG=%XERCESBUILD%\lib\xerces-c_3D.lib
cd VS2015
devenv xalan-c.sln /Build Debug /Project ALL_BUILD

请注意,xerces-c_3D.lib 专门用于调试版本,因此在进行发布版本时请删除 D

【讨论】:

【参考方案2】:

我已经设法在 Visual Studio 2010 中构建了 Xalan-C 版本 1.11,与最新版本的 Xerces-C (v3.1.1) 兼容。我不知道早期版本是否可行,但是这些是我为使用 1.11 版构建所遵循的步骤:

Xerces-C 必须构建为动态库才能获取 MsgCreator.exe 所依赖的 xerces-c_3_1D.dll 文件。

克隆github repository获取Xalan-C 1.11版本源代码。

在windows(不是Visual Studio)中设置环境变量XERCESCROOTXALANCROOT

 XERCESCROOT    The Xerces-C/C++ installation directory
 XALANCROOT     The Xalan-C/C++ source directory

在 VS2010 中打开 Xalan-C 解决方案并构建 MsgCreator 项目。

从 Xerces-C 构建中复制 xerces-c_3_1D.dll 文件并将其放在 Xalan-C 构建文件夹中,与 MsgCreator.exe 所在的文件夹相同。

现在可以生成构建“AllInOne”项目所需的“缺失”头文件(LocalMsgIndex.hpp 和 LocalMsgData.hpp)。

使用提供的XalanMsg_en_US.xlf 路径在 cmd 中运行 MsgCreator.exe,该路径位于 $(XALANCROOT)\src\xalanc\NLS\en_US 中,以及在构建语言环境消息时要使用的 method。

MsgCreator.exe $(XALANCROOT)\src\xalanc\NLS\en_US\XalanMsg_en_US.xlf -TYPE=inmem

(我使用了-TYPE=inmem,但请查看哪种方法最适合您的解决方案)

现在已生成头文件并位于构建目录(MsgCreator.exe 所在的位置)中。将它们复制或移动到$(XALANCROOT)\src,现在应该可以找到它们了。

现在构建XalanMsgLib 项目。

在最终构建之前要做的最后一件事是处理 afxres.hAllInOne.rc 文件(位于 $(XALANCROOT)\Projects\Win32\Res\AllInOne)中的包含。 Visual Studio Express 版本不包含包含 afxres.h 标头的 MFC 库。我只是将其改为#include "windows.h"

现在应该可以成功构建“AllInOne”了。

【讨论】:

这对xalanc 1.12.0Visual Studio 15 2017 有帮助。我将CMAKE_PREFIX_PATH 设置为 xerces 安装文件夹,并将xerces-c_3_2D.dll 复制到 MsgCreator.exe,其中包含 xalanc 构建文件夹中的文件夹

以上是关于如何使用 Visual Studio 2010 构建 Xalan-C?的主要内容,如果未能解决你的问题,请参考以下文章

.NET Framework、CLR 和 Visual Studio 版本号如何相互关联?

如何在 Visual Studio 2010 中使用 Visual Studio 2008 创建的 DLL?

在 Windows 7 而不是 Windows XP 上运行 Visual Studio 2010 的优势

如何在 Visual Studio 2008 或 Visual Studio 2010 中设置 JavaScript 断点

构建卡在 Visual Studio 2015 中

如何在 Visual Studio 2010 中使用互斥锁