我找不到证据证明这是可能的。经过 40 个小时让自己发疯后,我遇到了无法构建本地化项目的情况,该项目应该构建名称不佳的 AllInOne 项目(构建 Xalan-C.lib,natch)所需的头文件。
这个库是软件弊端,我迫切需要一个答案,因为它是另一个库中的依赖项,我别无选择。
我找不到证据证明这是可能的。经过 40 个小时让自己发疯后,我遇到了无法构建本地化项目的情况,该项目应该构建名称不佳的 AllInOne 项目(构建 Xalan-C.lib,natch)所需的头文件。
这个库是软件弊端,我迫切需要一个答案,因为它是另一个库中的依赖项,我别无选择。
我已经设法在 Visual Studio 2010 中构建了与最新版本的 Xerces-C (v3.1.1) 兼容的 Xalan-C 版本 1.11。我不知道早期版本是否可行,但是这些是我的步骤接下来是为了使用 1.11 版进行构建:
Xerces-C 必须构建为动态库才能获得 MsgCreator.exe 所依赖的 xerces-c_3_1D.dll 文件。
克隆github 仓库,获取 Xalan-C 1.11 版本的源代码。
XERCESCROOT
在 windows中设置环境变量XALANCROOT
(不在 Visual Studio 中)。
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)。
使用提供的路径在 cmd 中运行 MsgCreator.exe,该路径XalanMsg_en_US.xlf
位于其中,以及在构建区域设置消息时使用$(XALANCROOT)\src\xalanc\NLS\en_US
什么方法。
MsgCreator.exe $(XALANCROOT)\src\xalanc\NLS\en_US\XalanMsg_en_US.xlf -TYPE=inmem
(我使用过-TYPE=inmem
,但请检查哪种方法最适合您的解决方案)
头文件现在生成并位于构建目录(MsgCreator.exe 所在的位置)中。将它们复制或移动到$(XALANCROOT)\src
,现在应该可以找到它们。
现在构建XalanMsgLib
项目。
在最终构建之前要做的最后一件事是处理文件afxres.h
中的AllInOne.rc
包含(位于$(XALANCROOT)\Projects\Win32\Res\AllInOne
)。Visual Studio Express 版本不包含包含afxres.h
标头的 MFC 库。我只是将其更改为#include "windows.h"
。
现在应该可以成功构建“AllInOne”了。
我也为此苦苦挣扎,这是我的食谱(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。