专栏首页蓝天使用cmake编译和安装jsoncpp-0.10.2

使用cmake编译和安装jsoncpp-0.10.2

网上主要介绍了python方式编译安装jsoncpp,但它的官网有介绍cmake安装命令行安装方式,以下笔记在SUSE Linux g++ 4.1.0上经过验证。 使用cmake生成Makefile文件,类似于执行automake的“configure”: cmake -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DINCLUDE_INSTALL_DIR=/usr/local/thirdparty/jsoncpp-0.10.2/include -DARCHIVE_INSTALL_DIR=/usr/local/thirdparty/jsoncpp-0.10.2/lib 这一步成功后,可以看到产生了Makefile文件,之后就可以执行“make”编译和“make install“安装了。 “cmake”参数说明: INCLUDE_INSTALL_DIR为指定“头文件”的安装目录 ARCHIVE_INSTALL_DIR为指定“静态库文件”的安装目录 LIBRARY_INSTALL_DIR为指定“共享库文件”的安装目录 RUNTIME_INSTALL_DIR为指定“可执行程序文件”的安装目录 BUILD_STATIC_LIBS=ON 表示生成静态库文件 BUILD_SHARED_LIBS=OFF 表示不生成共享库文件 如果想编译成debug版本,则加上“-DCMAKE_BUILD_TYPE=debug”。 遇到的编译错误1: include/json/config.h:100: error: ISO C++ does not support 'long long' include/json/config.h:101: error: ISO C++ does not support 'long long' 解决方法: 修改include/json/config.h,将下面一段 #if defined(_MSC_VER) // Microsoft Visual Studio typedef __int64 Int64; typedef unsigned __int64 UInt64; #else                 // if defined(_MSC_VER) // Other platforms, use long long typedef long long int Int64; typedef unsigned long long int UInt64; #endif // if defined(_MSC_VER) 修改成: #if defined(_MSC_VER) // Microsoft Visual Studio typedef __int64 Int64; typedef unsigned __int64 UInt64; #else                 // if defined(_MSC_VER) // Other platforms, use long long __extension__ typedef long long int Int64; __extension__ typedef unsigned long long int UInt64; #endif // if defined(_MSC_VER) 注意要加“__extension__”修饰,因为“long long”是C99标准中的,“__extension__”表示启用g++的扩展。 遇到的编译错误2: /tmp/X/jsoncpp-0.10.2/src/test_lib_json/main.cpp:1243: error: integer constant is too large for 'long' type 解决方法: 测试代码,可直接注释掉1243一行代码。

 
 jsoncpp下载网址:https://github.com/open-source-parsers/jsoncpp/releases
 
 
 附:cmake编译安装
 如果机器上没有cmake,则需要先安装它。
 将cmake源代码包上传到Linux机器,解压它,然后执行“./configure --prefix=INSTALL_DIRECTORY”,
 比如:./configure --prefix=/usr/local/cmake-3.2.2。
 “configure”实际是调用了同目录下的“bootstrap.sh”。
 
 接着就可以执行“make”编译,编译成功后再执行“make install”安装。
 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • malloc.c

    glibc-2.14中的malloc.c源代码,供研究malloc和free实现使用:

    一见
  • Linux下用来获取各种系统信息的C++类

    下面是头文件内容,代码是mooon的一部分,对应的CPP文件请直接浏览:http://code.google.com/p/mooon/source/browse...

    一见
  • 爱奇艺视频窗口显示不出来解决办法

    自爱奇艺视频3.2版本以来,遇到爱奇艺视频窗口显示不出来,不管是从菜单、任务栏、桌面、还是通知栏点击,窗口都显示不出来,包括设置、关于等窗口统统显示不出来。应...

    一见
  • 1034 有理数四则运算 (20 分)

    输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。

    可爱见见
  • 【python】代码换行的几种方法

    在写list或者较长的字符串时候,或者多个循环造成IDE不够用时,就需要代码换行了。主要的代码换行有通用的反斜杠\和针对字符串起作用的三引号结构。

    py3study
  • 分治法的经典问题——大整数相乘

           分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一...

    墨文
  • oj

    由于题目数字特别大(10^18),可以使用long long(最大2^63-1)或unsigned long long(最大2^64-1)替代int。

    gojam
  • 序列化和反序列化uint64_t数据

    void serializeu64(unsigned long long i,char buf[]) { unsigned long long mask ...

    昊楠Hacking
  • 12:分数求和

    12:分数求和 总时间限制: 1000ms 内存限制: 65536kB描述 输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约...

    attack
  • 素数判定(素数)- HDU 2012

    刚学编程的时候,我们大多需要做的一道题,那就是用C语言来判定一个数是否是素数。那时候很自然的会想到,对于数n,直接遍历一下n以下的数x,如果n%...

    ACM算法日常

扫码关注云+社区

领取腾讯云代金券