前言:

Learn Gst 目标在于学习 gstreamer 和 glib。

目前规划工程结构有两个:

  • 自己联系的一些plugin
  • plugin的测试工程

工程结构及工程文件:

./CMakeList.txt

add_subdirectory(MyPlugins)
add_subdirectory(Tester)

./MyPlugins/CMakeList.txt

#cmake version
cmake_minimum_required(VERSION 3.10)#project name , not target name
project(GstMyPluginProject)#local vars
set(CMAKE_CXX_STANDARD 11)  #c++ 11
set(PLUGIN_INSTALL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../_OUTPUT) #plugin install path
set(UTIL_CODE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../Utils)
set(MODS_CODE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../Modules)#env var
if(NOT DEFINED ENV{GST_PLUGIN_PATH})set(ENV(GST_PLUGIN_PATH) ${PLUGIN_INSTALL_PATH})    #set GST_PLUGIN_PATH with plugin-install-path and export
endif()#pathes of source files search for
#aux_source_directory(${CMAKE_SOURCE_DIR} all_cpp_file)#target and all source files target depends on
add_library(gstmyplugin SHAREDGstMyFilter.cppGstMyPlugin.cppGstMyEsSrc.cpp${UTIL_CODE_PATH}/miscs.cpp${UTIL_CODE_PATH}/log.cpp${MODS_CODE_PATH}/esfilereader.cpp
)set_target_properties(gstmyplugin PROPERTIES LINKER_LANGUAGE CXX)#make install
install(TARGETS gstmyplugin DESTINATION ${PLUGIN_INSTALL_PATH})#pathes of head files search for
target_include_directories(gstmyplugin PUBLIC#system/usr/include#gstreamer/usr/include/gstreamer-1.0#glib/usr/lib/x86_64-linux-gnu/glib-2.0/include/usr/include/glib-2.0#user defined${CMAKE_CURRENT_SOURCE_DIR}/../Utils${CMAKE_CURRENT_SOURCE_DIR}/../Modules
)#pathes of static link search for
link_directories()#libs in use
target_link_libraries(gstmyplugin
#        -lavcodec
#        libeXosip2.a-lglog-lgstreamer-1.0-lgstbase-1.0 #base plugin ,lack of this will fail with "undefined symbol: gst_push_src_get_type"-lglib-2.0-lgobject-2.0
)#predefined macroS
ADD_DEFINITIONS(-D LINUX)
ADD_DEFINITIONS("-g") 

./Tester/CMakeList.txt

#cmake version
cmake_minimum_required(VERSION 3.10)#local vars
set(CMAKE_CXX_STANDARD 11)
set(INSTALL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../_OUTPUT) #install path
set(UTIL_CODE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../Utils)#pathes of static link search for
link_directories(#gstreamer#/home/ubuntu/_WORKSPACE/deps/gstreamer-1.18-all/lib/x86_64-linux-gnu
)#project name
project(main)#target and all source files target depends on
add_executable(main main.cpp${UTIL_CODE_PATH}/log.cpp
)#pathes of head files search for
target_include_directories(main PUBLIC#system/usr/include#gstreamer/usr/include/gstreamer-1.0#glib/usr/include/glib-2.0/usr/lib/x86_64-linux-gnu/glib-2.0/include#self def${CMAKE_CURRENT_SOURCE_DIR}/../Utils${CMAKE_CURRENT_SOURCE_DIR}/../MyPlugins
)#libs in use
target_link_libraries(main-lgstreamer-1.0-lglib-2.0-lgobject-2.0-lgstaudio-1.0-lgstpbutils-1.0-lgstvideo-1.0-lglog
)#predefined macro
ADD_DEFINITIONS(-D LINUX)
ADD_DEFINITIONS("-g")#make install
install(TARGETS main DESTINATION ${INSTALL_PATH}) 

clean.sh

#!/bin/shrm -rf ./BUILD/*
rm -rf ./_OUTPUT/lib*
rm -rf ./_OUTPUT/main

make.sh

#!/bin/shcd _BUILD
cmake ../ && make && make install
cd ../

run.sh

#!/bin/shcd _OUTPUT
./main && cd ../

setenv.sh

#!/bin/shecho "add following statment to .bashrc -> export GST_PLUGIN_PATH=$GST_PLUGIN_PATH/:$PWD/_OUTPUT/"

tail.sh

#! /bin/shcd _OUTPUT/log/ && tail -f -n 100 test.INFO

Readme

# LearnGst
learn gst# make
./make.sh# run
./run.sh

[Learn Gst] 工程结构相关推荐

  1. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  2. Blender赛车动画制作学习教程 Learn Race Car Animation with Blender

    使用Blender 2.93创建您自己的惊人汽车动画 你会学到什么 Blender的界面和导航 建模 UV制图 材料 动画 照明设备 渲染 合成 要求 下载并安装Blender.免费下载和免费用于任何 ...

  3. Blender3.0动画制作入门学习教程 Learn Animation with Blender (2021)

    要求 下载并安装Blender.免费下载和免费用于任何目的. 描述 加入我的动画课程. 在本课程中,我将从头开始讲述在Blender中创建动画场景的过程. 从第一步到最终渲染.在这个课程中,我们将使用 ...

  4. Unity与C#创建一个3D平台游戏 Learn to Create a 3D Platformer Game with Unity C#

    游戏开发变得容易了.使用Unity学习C#并创建您自己的3D平台! 你会学到什么 学习现代通用编程语言C#. 了解Unity中3D开发的功能 发展强大的可转移的解决问题的技能 了解游戏开发过程 了解面 ...

  5. 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...

  6. Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity

    Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity MP4 |视频:h264,1280x720 |音频:A ...

  7. Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D C#: Learn To Code Making 3D Games

    Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D & C#: Learn To Code Making 3D Games Full Guide To Unit ...

  8. 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...

    1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...

  9. 读书笔记2013第10本:《学得少却考得好Learn More Study Less》

    <学得少却考得好Learn More Study Less>这本书最早是从褪墨网站上看到的,crowncheng翻译了全文.这本书介绍了不少学习方法,非常适合在校的学生,原文的作者Scot ...

最新文章

  1. 最长上升子序列(LIS)长度及其数量
  2. ThinkPHP框架使用心得二 CURD操作
  3. Python函数参数学习
  4. 洛谷 P4660 bzoj 1168 [ Baltic OI 2008 ] 手套 —— 分析+单调栈
  5. 13 PP配置-生产主数据-BOM相关-定义修正参数
  6. 北方民族大学计算机全国排名,校友会:全国15所民族类大学排名,这三所大学进入十强...
  7. c 语言 移位四舍五入,关于C 语言中的四舍五入问题
  8. jQuery .tmpl(), .template()学习
  9. procreate 笔刷_插画学习必备:2000款Procreate大师级笔刷,超级强大,免费领取
  10. 48. Rotate Image java solutions
  11. 求助:为什么我用360浏览器和UC浏览器打不开JAVA中的index.html文件? 一打开就显示浏览器首界页...
  12. 190317每日一句
  13. 16个最佳软件配置管理工具
  14. 史上最强的10大管理定律
  15. La3713 Astronauts 2-Sat
  16. (MATLAB)大家来找茬-简易的彩色图像找不同
  17. 一个接近90岁的维族老大爷用酒把我撂倒了
  18. 项目经验不丰富、技术不突出的程序员怎么打动面试官?
  19. PS教程丨如何使用PS消除全景图中的三脚架?
  20. 一些小软件闪退的解决方案

热门文章

  1. 射线检测算法在游戏中应用
  2. sentinel限流介绍
  3. 一张照片引发的“美国总统泄密”事件
  4. 【算法笔记题解】《算法笔记知识点记录》第三章——入门模拟1——简单模拟
  5. “张一鸣”为何突袭“王兴”
  6. 【Hadoop】运行MR任务,出现Container is running beyond physical memory limits错误
  7. Ubuntu16.04强制关机再进入系统出现死机的问题
  8. AC-PEG-OH,Acrylate-PEG-Hydroxyl,丙烯酸酯-聚乙二醇-羟基可用来修饰蛋白质
  9. 第二十六篇:USB3.0高带宽ISO(48KBytes/125us)实战
  10. Rebound-Android的弹簧动画库