我正在尝试编写一个 CMAKE 文件来编译此处找到的代码。
我当前的 CMAKE 文件如下所示,并且已成功编译并链接了之前的教程。它也编译了这个,但在链接时出现以下错误:
undefined reference to `gst_video_overlay_get_type'
undefined reference to `gst_video_overlay_set_window_handle'
Run Code Online (Sandbox Code Playgroud)
CMAKE 文件如下所示:
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})
Run Code Online (Sandbox Code Playgroud)
其他 SO 帖子建议了gstreamer-video-1.0
我相信我所在的链接:
target_link_libraries(gstreamer ${GST_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
如果我误解了 PkgConfig 的工作原理,我非常感谢您的解释。
谢谢
这就是它与现代基于目标的 CMake 的配合方式:
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
)
Run Code Online (Sandbox Code Playgroud)
请注意缺少target_include_directories
. 导入的目标包含所有这些信息,包括链接器标志、编译器标志、库路径、包含路径等。通过链接到导入的目标target_link_libraries
会将所有内容PUBLIC
和INTERFACE
属性从其中拉入my-gstreamer-app
目标。
小智 5
你可以试试:
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)
Run Code Online (Sandbox Code Playgroud)
和
target_link_libraries(${PROJECT_NAME} ${GST_APP_LIBRARIES} ${GST_VIDEO_LIBRARIES})
归档时间: |
|
查看次数: |
8932 次 |
最近记录: |