首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写成功链接gstreamer基本教程5的CMAKE文件

如何编写成功链接gstreamer基本教程5的CMAKE文件
EN

Stack Overflow用户
提问于 2020-09-26 13:37:05
回答 2查看 4K关注 0票数 2

我正在尝试编写一个CMAKE文件,它将编译找到的这里代码。

我当前的CMAKE文件如下所示,并成功地编译和链接了前面的教程。它也编译了这个程序,但是在链接时我得到了以下错误:

代码语言:javascript
运行
复制
undefined reference to `gst_video_overlay_get_type'
undefined reference to `gst_video_overlay_set_window_handle'

CMAKE文件如下所示:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.18)
project(gstreamer)

set(CMAKE_CXX_STANDARD 20)

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)

pkg_search_module(GST REQUIRED gstreamer-1.0>=1.4
        gstreamer-sdp-1.0>=1.4
        gstreamer-app-1.0>=1.4
        gstreamer-video-1.0>=1.4
        )


add_executable(gstreamer main.cpp)

target_include_directories(gstreamer PRIVATE ${GTK3_INCLUDE_DIRS} ${GST_INCLUDE_DIRS})
target_link_libraries(gstreamer ${GTK3_LIBRARIES} ${GST_LIBRARIES})

其他这样的帖子建议将我所处的gstreamer-video-1.0链接起来:

代码语言:javascript
运行
复制
target_link_libraries(gstreamer ${GST_LIBRARIES})

如果我误解了PkgConfig的工作原理,我很想得到一个解释。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-10-28 21:33:51

你可以试试:

代码语言:javascript
运行
复制
find_package(PkgConfig) 
pkg_search_module(GLIB REQUIRED glib-2.0) 
pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0)
pkg_check_modules(GST_APP REQUIRED gstreamer-app-1.0)
pkg_check_modules(GST_VIDEO REQUIRED gstreamer-video-1.0)

target_link_libraries(${PROJECT_NAME} ${GST_APP_LIBRARIES} ${GST_VIDEO_LIBRARIES})

票数 5
EN

Stack Overflow用户

发布于 2022-10-12 07:47:47

这就是它与基于现代目标的CMake的工作方式:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.15.3)
project(gstreamer)

set(CMAKE_CXX_STANDARD 20)

find_package(PkgConfig REQUIRED)
pkg_check_modules(gtk3 REQUIRED IMPORTED_TARGET gtk+-3.0)
pkg_search_module(gstreamer REQUIRED IMPORTED_TARGET gstreamer-1.0>=1.4)
pkg_search_module(gstreamer-sdp REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0>=1.4)
pkg_search_module(gstreamer-app REQUIRED IMPORTED_TARGET gstreamer-app-1.0>=1.4)
pkg_search_module(gstreamer-video REQUIRED IMPORTED_TARGET gstreamer-video-1.0>=1.4)

add_executable(my-gstreamer-app main.cpp)

target_link_libraries(my-gstreamer-app
    PkgConfig::gtk3
    PkgConfig::gstreamer
    PkgConfig::gstreamer-sdp
    PkgConfig::gstreamer-app
    PkgConfig::gstreamer-video
)

注意没有target_include_directories。导入的目标包含所有这些信息,包括链接器标志、编译器标志、库路径、包含路径等。通过target_link_libraries链接到导入的目标将将所有PUBLICINTERFACE属性从它们中提取到my-gstreamer-app目标中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64078308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档