3

有人有jsoncpp在 vc90 上工作吗?

他们使用我从未听说过的构建系统 Scons。我安装了最新的 Scons,找到了一个未记录的 scons.bat,在我的 jsoncpp 目录中启动了 vc90 提示,修改了 SConstruct 文件以支持 msvc90 目标(我从已经支持的 msvc80 平台复制了样板)运行scons.bat platform=msvc90并出现错误:

scons: done reading SConscript files.
scons: Building targets ...
cl /Fobuildscons\msvc90\src\jsontestrunner\main.obj /c src\jsontestrunner\main.c
pp -GR -EHsc /nologo /MT /nologo /Iinclude /I.
main.cpp
c:\projects\docwayhead\wspt_docway_plugins\contrib\jsoncpp-src-0.5.0\include\jso
n\value.h(5) : fatal error C1083: Cannot open include file: 'string': No such fi
le or directory
scons: *** [buildscons\msvc90\src\jsontestrunner\main.obj] Error 2
scons: building terminated because of errors.

我已经付出了太多努力来构建它,而 jsoncpp 显然没有维护,所以我现在放弃了。

4

5 回答 5

4

无需使用 Scons。

/makefiles/vc71 / 下,您可以找到一个可以向上转换和构建的 Visual Studio 解决方案。

于 2010-11-25T21:57:43.977 回答
0

修改 msvc90 平台文件以确保在调用 cl 时使用 VC90 包含目录(在您提供的提供的命令行中显然还不是这种情况)。

请注意,Scons 是使用 Python 编写的,其配置文件也是如此,因此您周围了解 Python 的人可能能够有效地帮助您,即使他们对 scons 一无所知。

于 2010-11-08T16:57:26.240 回答
0

你确定你的 VS 命令行工作正常吗?我只是通过以下方式让它工作: - 在 allowed_values 中添加一个 msvc90 条目 - 稍后复制/粘贴 msvc80 部分并将其修改为使用 env['MSVS_VERSION'] = 9.0

我正在使用 scons 1.3.0。

于 2010-11-26T21:27:46.317 回答
0

从 jsoncpp 的 0.6.0 版本开始,您可以通过使用新的 Amalgamated 版本来避免很多麻烦。这只是您直接编译到项目中的两个 .h 文件和一个 .cpp 文件。到目前为止,它在 VS 9 中对我来说非常有用(并且通过一些模块,我现在也可以使用 C++Builder 2010 编译它——还没有真正测试过结果)。

顺便说一句,我已经针对 0.6.0-rc2 版本提交了一个错误;合并版本中的一行json.h需要更改宏名称。

于 2011-06-10T21:12:59.350 回答
0

jsoncpp 0.5.0 的 scons 设置不支持开箱即用的 VS 9.0 或 10.0。您需要先将 msvc90 添加到 SConstruct 第 21 行的 allowed_values 中,然后在第 103 行添加此部分。

elif platform == 'msvc90':
    env['MSVS_VERSION']='9.0'
    for tool in ['msvc', 'msvs', 'mslink', 'masm', 'mslib']:
        env.Tool( tool )
    env['CXXFLAGS']='-GR -EHsc /nologo /MT'

只需将 9.0 替换为 10.0 并将 90 替换为 100 即可获得 VS 10.0 支持。

于 2011-04-05T08:18:05.220 回答