windows下编译jsoncpp 1.y.z

百度上搜索“windows 编译 jsoncpp”都是针对jsoncpp 0.y.z版本的(大多是0.5.0或者0.10.x)为主,对1.y.z的几乎没有。而刚好我涉及到的应用(百度AI的c++API必须要求1.6.2以上)。摸索后总结如下。

  1. 下载jsoncpp源码
    GitHub下载:https://github.com/open-source-parsers/jsoncpp
    或者点击 这里 下载
    下载完成后解压。

  2. 0.y.z版本源码目录中有现成的vs项目,而1.y.z并没有,所以无法直接编译。

  3. 尝试借助cmake工具生成vs项目文件。因为使用到了c++11的新特性,所以建议下载最近的cmake。
    官网地址:https://cmake.org/download/
    我下载的是最新稳定版:cmake-3.14.5-win64-x64.zip
    解压。

  4. 进入jsoncpp-master目录,创建子目录

mkdir -p build\debug
cd build\debug
  1. 使用cmake产生工程项目文件
cmake -DCMAKE_BUILD_TYPE=release -DBUILD_STATIC_LIBS=OFF -DBUILD_SHARED_LIBS=ON  -DCMAKE_INSTALL_INCLUDEDIR=include         -DARCHIVE_INSTALL_DIR=.

如果提示错误

CMake Error at src/lib_json/CMakeLists.txt:89 (target_compile_features):
target_compile_features specified unknown feature “cxx_std_11” for target
“jsoncpp_lib”.
– Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE) (Required is at least version “2.6”)
– Configuring incomplete, errors occurred!

那么就是因为当前版本的cmake太旧,需要按照步骤3重新下载更新版本。
正确的提示应该是:

D:\jsoncpp-master\build\debug>D:\ProgramUtils\cmake-3.14.5-win64-x64\bin\cmake.exe -DCMAKE_BUILD_TYPE=release -DBUILD_STAT
IC_LIBS=OFF -DBUILD_SHARED_LIBS=ON  -DCMAKE_INSTALL_INCLUDEDIR=include         -DARCHIVE_INSTALL_DIR=. ../..
-- The CXX compiler identification is MSVC 18.0.21005.1
-- Check for working CXX compiler: D:/ProgramIDE/Microsoft Visual Studio 12.0/VC/bin/cl.exe
-- Check for working CXX compiler: D:/ProgramIDE/Microsoft Visual Studio 12.0/VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- JsonCpp Version: 1.9.0
-- Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE) (Required is at least version "2.6")
-- Configuring done
-- Generating done
-- Build files have been written to: D:/jsoncpp-master/build/debug
  1. 打开vs项目文件
    D:\jsoncpp-master\build\debug目录下生成了JSONCPP.sln
    D:\jsoncpp-master\build\debug\src\lib_json目录下生成了jsoncpp_lib.vcxproj
    以及其他一些项目文件

双击使用Visual Studio打开JSONCPP.sln,就可以进行编译了。

你可能感兴趣的:(云大物移智,c++)