主要任务:
在Centos7上成功运行CGraph的示例代码
创建自己的demo程序,成功调用CGraph
源CGraph项目的地址:
https://github.com/ChunelFeng/CGraph
第一步 升级cmake
- 删除自带的cmake
yum remove cmake -y && rm -f /usr/bin/cmake
- 从官网下载需要的cmake版本包
cmake官网:cmake.org/
cmake下载地址:cmake.org/files/
直接下载的话可以用这个:
wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz
- 下载完之后解压
tar zxvf cmake-3.14.5.tar.gz
- 安装基本的编译工具
./configure --prefix=/usr/local/cmake
- 安装
make && make install
- 创建软连接
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
使配置生效
source /etc/profile
- 查看cmake版本
cmake -version
第二步 克隆CGraph的github代码并运行示例代码
git clone https://github.com/ChunelFeng/CGraph.git
cd CGraph
cmake . -Bbuild
cd build
make -j8
./build/T00-HelloCGraph # 运行第一个实例程序,并且在终端输出 Hello, CGraph.
第三步 创建自己的demo程序
- 这里用github上给出的示例代码为例
main.cpp
#include "MyNode.h"
using namespace CGraph;
int main() {
/* 创建一个流水线,用于设定和执行流图信息 */
GPipelinePtr pipeline = GPipelineFactory::create();
GElementPtr a, b, c, d = nullptr;
/* 注册节点,其中MyNode1和MyNode2必须为GNode的子类,否则无法通过编译 */
CStatus status = pipeline->registerGElement<MyNode1>(&a, {}, "nodeA");
status += pipeline->registerGElement<MyNode2>(&b, {a}, "nodeB");
status += pipeline->registerGElement<MyNode1>(&c, {a}, "nodeC");
status += pipeline->registerGElement<MyNode2>(&d, {b, c}, "nodeD");
if (!status.isOK()) {
return 0; // 对以上所有CGraph接口的返回值做判定
}
/* 执行流图框架 */
pipeline->process();
GPipelineFactory::remove(pipeline);
return 0;
}
Mynode.h
#include "../src/CGraph.h"
class MyNode1 : public CGraph::GNode {
public:
CStatus run () override {
CStatus status;
printf("[%s], Sleep for 1 second ...\n", this->getName().c_str());
CGRAPH_SLEEP_SECOND(1)
return status;
}
};
class MyNode2 : public CGraph::GNode {
public:
CStatus run () override {
CStatus status;
printf("[%s], Sleep for 2 second ...\n", this->getName().c_str());
CGRAPH_SLEEP_SECOND(2)
return status;
}
};
2. 在项目的根目录下建立build文件夹和CMakeLists.txt文件
在CMakeLists.txt文件中添加以下内容
cmake_minimum_required(VERSION 3.0)
project(MyProject)
# 添加可执行文件的源文件
add_executable(MyExecutable main.cpp)
# 添加头文件的搜索路径
include_directories(${CMAKE_SOURCE_DIR})
# 引用库的 CMake 文件 这个.cmake文件是CGraph提供的三方引入cmake文件
include(/CGraphDemo/CGraph/cmake/CGraph-env-include.cmake)
# 链接库到 MyExecutable 可执行文件
target_link_libraries(MyExecutable CGraph) # 生成的可执行文件名为MyExecutable
3. cd到build目录,生成makefile文件并产生可执行文件
cmake .. # 在build目录下生成makefile
make # 生成可执行文件
./MyExecutable # 执行可执行文件
附:VScode添加项目配置
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/opt/rh/devtoolset-8/root/usr/include/c++/8",
"/opt/rh/devtoolset-8/root/usr/include/c++/8/x86_64-redhat-linux",
"/CGraphDemo/CGraph/src"
],
"defines": [],
"compilerPath": "/opt/rh/devtoolset-8/root/usr/bin/g++",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}