自动生成cmake工程结构

在插件开发过程中,每次都手工创建插件工程相关的目录和文件也是让人烦的事情。而随着插件的积累,我们开发的经验越来越多,开发速度越来越快,能否构建一个IDE,通过用户的设置和选择,自动生成插件工程。如果是h264编码的基于rtsp或者upd协议发送视频流,同时使用opencv解码,那么我们只需要配置ip、port、帧率等,一般可以快速生成对应的代码,甚至不用修改就能直接使用。

为此,后面需安排人员开展相关工作调研。目前可以参考的大概有基于fluent UI +QML的前端框架可以使用。

为了临时解决我们的需求,暂时可以使用脚本来创建通用cmake工程。相关脚本如下:

C++版:create_cpp.sh

#! /bin/bash
echo 'making c++ project files ...'

project=default
if [ ! $1 ]; then
    echo '============input a project name first !!!!!=============='
    exit
else
    echo '============inpputed project is:' $1 '==================='
    project=$1
fi
rm -rf ./$project

mkdir ./$project
mkdir ./$project/src
mkdir ./$project/src/include
mkdir ./$project/build

echo 'making CMakeLists.txt'
echo 'set(PROJECT CProject_main)' >> ./$project/CMakeLists.txt
echo 'message("Making ${PROJECT} ...")' >> ./$project/CMakeLists.txt
echo 'cmake_minimum_required(VERSION 3.16)' >> ./$project/CMakeLists.txt
echo 'project(${PROJECT})' >> ./$project/CMakeLists.txt
echo 'aux_source_directory(./src SRC_FILE)' >> ./$project/CMakeLists.txt
echo 'add_executable(run ${SRC_FILE})' >> ./$project/CMakeLists.txt
echo 'message("Make ${PROJECT} ok, please execute run")' >> ./$project/CMakeLists.txt

echo 'making main.cpp'
echo '#include <iostream>' >> ./$project/src/main.cpp
echo '' >> ./$project/src/main.cpp
echo 'int main()' >> ./$project/src/main.cpp
echo '{' >> ./$project/src/main.cpp
echo '    std::cout << "Hello world" << std::endl;' >> ./$project/src/main.cpp
echo '    return 0;' >> ./$project/src/main.cpp
echo '}' >> ./$project/src/main.cpp

echo 'making rebuild_run.sh'
echo 'rm -rf ./build/*' >> ./$project/rebuild_run.sh
echo 'cd ./build' >> ./$project/rebuild_run.sh
echo 'cmake ../' >> ./$project/rebuild_run.sh
echo 'make' >> ./$project/rebuild_run.sh
echo './run' >> ./$project/rebuild_run.sh

echo 'making buildrun.sh'
echo 'cd ./build' >> ./$project/buildrun.sh
echo 'make' >> ./$project/buildrun.sh
echo './run' >> ./$project/buildrun.sh

C版:create_c.sh

#! /bin/bash
echo 'making c project files ...'

project=default
if [ ! $1 ]; then
    echo '============input a project name first !!!!!=============='
    exit
else
    echo '============inpputed project is:' $1 '==================='
    project=$1
fi
rm -rf ./$project

mkdir ./$project
mkdir ./$project/src
mkdir ./$project/src/include
mkdir ./$project/build

echo 'making CMakeLists.txt'
echo 'set(PROJECT CProject_main)' >> ./$project/CMakeLists.txt
echo 'message("Making ${PROJECT} ...")' >> ./$project/CMakeLists.txt
echo 'cmake_minimum_required(VERSION 3.16)' >> ./$project/CMakeLists.txt
echo 'project(${PROJECT})' >> ./$project/CMakeLists.txt
echo 'aux_source_directory(./src SRC_FILE)' >> ./$project/CMakeLists.txt
echo 'add_executable(run ${SRC_FILE})' >> ./$project/CMakeLists.txt
echo 'message("Make ${PROJECT} ok, please execute run")' >> ./$project/CMakeLists.txt

echo 'making main.c'
echo '#include <stdio.h>' >> ./$project/src/main.c
echo '#include <stdlib.h>' >> ./$project/src/main.c
echo '' >> ./$project/src/main.c
echo 'int main()' >> ./$project/src/main.c
echo '{' >> ./$project/src/main.c
echo '    printf("Hello world\\n");' >> ./$project/src/main.c
echo '    return 0;' >> ./$project/src/main.c
echo '}' >> ./$project/src/main.c

echo 'making rebuild_run.sh'
echo 'rm -rf ./build/*' >> ./$project/rebuild_run.sh
echo 'cd ./build' >> ./$project/rebuild_run.sh
echo 'cmake ../' >> ./$project/rebuild_run.sh
echo 'make' >> ./$project/rebuild_run.sh
echo './run' >> ./$project/rebuild_run.sh

echo 'making buildrun.sh'
echo 'cd ./build' >> ./$project/buildrun.sh
echo 'make' >> ./$project/buildrun.sh
echo './run' >> ./$project/buildrun.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值