jsoncpp на vc90? - PullRequest
       33

jsoncpp на vc90?

3 голосов
/ 08 ноября 2010

у кого-нибудь есть jsoncpp , работающий на vc90?

они используют систему сборки, Scons, о которой я никогда не слышал. Я установил последние Scons, нашел недокументированный файл scons.bat, запустил приглашение vc90 в моем каталоге jsoncpp, изменил файл 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 явно не поддерживается, поэтому я сейчас сдаюсь.

Ответы [ 5 ]

4 голосов
/ 26 ноября 2010

Нет необходимости использовать Scons.

В / makefiles / vc71 / вы можете найти решение для Visual Studio, которое вы можете конвертировать и создавать.

0 голосов
/ 11 июня 2011

Начиная с версии 0.6.0 jsoncpp, вы можете избежать многих хлопот, используя новую объединенную версию. Это всего два файла .h и один файл .cpp, которые вы компилируете непосредственно в свои проекты. До сих пор он отлично работал для меня в VS 9 (и с несколькими модами теперь я могу скомпилировать его и в C ++ Builder 2010 - пока еще не протестировал результат).

Кстати, я подал ошибку в версии 0.6.0-rc2; одна строка в объединенной версии json.h требует изменения имени макроса.

0 голосов
/ 05 апреля 2011

Настройка scons для jsoncpp 0.5.0 не поддерживает VS 9.0 или 10.0 из коробки. Сначала необходимо добавить msvc90 в значение allow_values ​​в строке 21 SConstruct, а затем добавить этот раздел в строку 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.

0 голосов
/ 27 ноября 2010

Вы уверены, что ваша командная строка VS работает правильно?Я заставил его работать, просто: - добавив запись msvc90 в allow_values ​​- скопируйте / вставив раздел msvc80 позже и изменив его для использования env ['MSVS_VERSION'] = 9.0

Я использую scons 1.3.0.

0 голосов
/ 08 ноября 2010

Измените файл платформы msvc90, чтобы убедиться, что каталоги VC90 используются при вызове cl (ясно, что это не так в предоставленной вами командной строке).

Обратите внимание, что Scons написан с использованием Python, как и его файлы конфигурации, поэтому люди, которые знают Python вокруг вас, могут помочь вам эффективно, даже если они ничего не знают о scons.

...