[Debian8 cmake] 在无root权限下安装cmake

原因

咱的程序是依赖cmake的喵,但是服务器又没有安装cmake,但但是还没有root权限喵。

没有root权限也可以喵

它是可以装在 $HOME 下的喵。
从 cmake 官网中下载最新版 cmake,然后放到 $HOME 目录里喵。
然后解压喵:

$ tar -zxvf cmake-3.8.0-rc1.tar.gz

编译喵:

$ ./configure --prefix=/path/to/bin
$ make -j8
$ make install

/path/to/bin 改成自己的 $HOME 目录喵, echo $HOME
蓝后把编译出来的cmake放到环境变量里喵:

$ echo 'export PATH=$PATH:/path/to/bin' >> ~/.bashrc

像刚才一样,把/path/to/bin改成自己的 $HOME 目录喵。
立即生效 bashrc:

$ source ~/.bashrc

蓝后输入 cmake --version 看看版本是不是乃刚刚下载的。

利用 C++ 編寫一個Telegram機器人[2] 分析HelloWorld代碼

上篇文章編寫了一個Hello World,現在簡單分析一下hello_tgbot.cpp。
源文件:

#include <stdio.h>
#include <tgbot/tgbot.h>
int main() {
    TgBot::Bot bot("TOKEN");
    bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {
        bot.getApi().sendMessage(message->chat->id, "Hi!");
    });
    bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {
        printf("User wrote %s\n", message->text.c_str());
        if (StringTools::startsWith(message->text, "/start")) {
            return;
        }
        bot.getApi().sendMessage(message->chat->id, "Your message is: " + message->text);
    });
    try {
        printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str());
        TgBot::TgLongPoll longPoll(bot);
        while (true) {
            printf("Long poll started\n");
            longPoll.start();
        }
    } catch (TgBot::TgException& e) {
        printf("error: %s\n", e.what());
    }
    return 0;
}

代码也是比较简单,完全注释如下:

#include <stdio.h>
#include <tgbot/tgbot.h>

int main() {
    TgBot::Bot bot("311798585:AAGuRp1I1oMQmErl8O6SCSK8j2nNrrOtEOE"); // TOKEN
    bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) { // 命令事件 lambda表达式
        bot.getApi().sendMessage(message->chat->id, "Hi!");
    });

    bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) { // 任何信息 事件
        printf("User wrote %s\n", message->text.c_str()); // 用户说了啥
        if (StringTools::startsWith(message->text, "/start")) { // 防止重复
            return;
        }
        bot.getApi().sendMessage(message->chat->id, "Your message is: " + message->text); // 发送消息  message->chat->id 是聊天ID,类似UUID
    });

    try {
        printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str()); // 获取 bot name
        TgBot::TgLongPoll longPoll(bot); // 长循环
        while (true) {
            printf("Long poll started\n");
            longPoll.start(); // 类似 WIN32 接受信息
        }
    } catch (TgBot::TgException& e) { // 遇到问题
        printf("error: %s\n", e.what()); // 输出问题描述
    }
    return 0;
}