make install指定目标目录的两种方法

方法一:对于大多数工程,特别是cmake生成的工程,只需要执行下列命令

方法二:少数工程(如源码安装git)发现用方法1实际上安装到了 /install/directory//home/username 目录,即用户根目录,这是因为Makefile内部已经设置了一遍安装目标目录,手工设置的目录仅仅作为了一个前缀。

打开Makefile文件,发现有如下代码(就在最顶端)

修改第一行 prefix 对应目录即可。

原创文章地址:【make install指定目标目录的两种方法】转载时请注明出处mhy12345.xyz

Install OpenMP in MacOS : Cannot find gcc option –without-multilib

I want to install OpenMP in my MacOS system, and there are plenty of tutorials about how to install OpenMP. Unfortunately, most of them cannot work on my computer. We I try to use   brew reinstall gcc --without-multilib ,the  --without-multilib  Option seems not be well supported.

I still do not know why this happens, may be caused by the newer MacOS, but we can use another approach mentions in  Clang + OpenMP Setup in macOS

Firstly, we use  brew install llvm  to install llvm. In my system  clang & clang++ was installed into  /usr/local/opt/llvm/bin and be overlapped by original  clang , We use the soft link to create an alias of new clang.

The openmp then works in my computer, we can use   clang-omp++ main.cpp -o main -fopenmp to compile an openmp program.

原创文章地址:【Install OpenMP in MacOS : Cannot find gcc option –without-multilib】转载时请注明出处mhy12345.xyz

MacOS 使用 OpenMP : gcc没有–without-multilib选项解决方案

网络上已经有很多通过brew安装openmp的教程,其中大部分都用的是 brew reinstall gcc --without-multilib 。但是,当我使用 brew options gcc 命令查看gcc的可用开关,发现并没有 --without-multilib 这样的选项。

这个错误的具体原因仍然不知道,可能是mac系统版本的问题,不过参考 Clang + OpenMP Setup in macOS,可以知道,在Mac中对于OpenMP的支持,已经内置到了llvm中,于是得到如下的解决方式:

首先使用 brew install llvm 安装llvm,在我的电脑中,发现llvm的 clang & clang++ 安装到了 /usr/local/opt/llvm/bin 位置,但是被系统默认的 clang 覆盖了。因此我们可以将omp使用的clang软连接来重命名。

这样我们就成功实现了Mac系统安装OpenMP,通过 clang-omp++ main.cpp -o main -fopenmp测试成功。

 

原创文章地址:【MacOS 使用 OpenMP : gcc没有–without-multilib选项解决方案】转载时请注明出处mhy12345.xyz

通过jsoncpp库的CharReaderBuilder解析字符串

jsoncpp安装

jsoncpp是C++用来解析json语言使用的库。可以直接在github上面clone下来。

clone下来的jsoncpp包含CMakeLists.txt,也就是说我们可以使用标准的cmake安装方法:

如果你使用了 make install ,那么在工程CMakeLists.txt中,可以使用

安装,另一方面,如果直接将jsoncpp放在了工程目录中,那么CMakeLists.txt可以如下引用:

CharReaderBuilder的使用

大部分网上的教程都使用了jsoncpp的Reader类,新版的jsoncpp已经废弃了之该类,编译的时候出现如下警告:

我们来看看建议的 CharReader 和 CharReaderBuilder 该怎么用吧。

首先, CharReader 是一个虚类,是用于自定义解析格式的Reader,我们这里并不能使用。而 CharReaderBuilder 则可以直接使用,具体格式也很简单,直接通过一个小程序解释吧:

之后的 Json::Value 就和更新前的一样,支持字符串下标索引(用于字典),整数下标索引(用于列表)和 asInt() 类基本数据类型转换函数。

原创文章地址:【通过jsoncpp库的CharReaderBuilder解析字符串】转载时请注明出处mhy12345.xyz