CLion 在 Ubuntu 16.04 LTS 上找不到 gstreamer
gstreamer not found by CLion on Ubuntu 16.04 LTS
我正在开展一个项目,该项目需要 gstreamer 通过 UPD 将网络摄像头源流式传输到另一台计算机。我整个上午都在尝试在我的 Ubuntu 16.04 上安装 gstreamer,最终我设法使用以下命令让它工作:
sudo apt-get install libgstreamer0.10-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 gstreamer0.10-tools gstreamer-tools gstreamer0.10-doc gstreamer0.10-x
我还修改了项目中的 cmake 文件,以尝试包含 gstreamer 库(参见评论):
cmake_minimum_required(VERSION 3.1.0)
PROJECT(gstreamer-test)
# paths
LINK_DIRECTORIES(/usr/local/lib) # OpenCV
LINK_DIRECTORIES(/usr/include/glib-2.0) #gstreamer
LINK_DIRECTORIES(/usr/include/gstreamer-0.10)
# Build settings
SET(EXECUTABLE_OUTPUT_PATH build/bin)
SET(LIBRARY_OUTPUT_PATH build/lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY build)
# Compiler settings
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
SET(OpenCV_LIBRARIES opencv_core opencv_highgui opencv_videoio -lopencv_calib3d opencv_imgproc -lopencv_imgcodecs opencv_ml opencv_objdetect opencv_features2d opencv_flann)
add_executable(gstreamer_test main.cpp)
TARGET_LINK_LIBRARIES(gstreamer_test ${OpenCV_LIBRARIES})
CLion 仍然拒绝包含 gstreamer。当我尝试从他们的网站 (https://gstreamer.freedesktop.org/documentation/application-development/basics/helloworld.html) 构建教程 'hello world' 应用程序时,它失败了,因为 CLion 找不到包含的 gst/gst.h 和 glib.h 文件。
一些论坛建议使用find_package命令,但我什至不知道这个库的确切包名是什么,我只知道头文件的位置。关于这方面的文档似乎也很少。
有人知道如何在我的项目中正确包含 gstreamer 库吗?
尝试find_package
。您可以使用此模块 https://github.com/WebKit/webkit/blob/master/Source/cmake/FindGStreamer.cmake 并将其放入例如 ./cmake/ 中。比添加到您的 CMakeLists.txt
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)
find_package(GStreamer)
if(GStreamer_FOUND)
message(STATUS "FOUND!!")
include_directories(${GSTREAMER_INCLUDE_DIRS})
endif()
...
target_link_libraries(gstreamer_test ${GSTREAMER_LIBRARIES})
我的 CMake 输出:
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'gstreamer-1.0 >= '
-- Found gstreamer-1.0 , version 1.8.3
-- Checking for module 'gstreamer-base-1.0 >= '
-- Found gstreamer-base-1.0 , version 1.8.3
-- Checking for module 'gstreamer-app-1.0 >= '
--
-- Checking for module 'gstreamer-audio-1.0 >= '
CMakeCache 中的变量:
//Path to a library.
GSTREAMER_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so
只需使用 INCLUDE_DIRECTORIES
而不是 LINK_DIRECTORIES
- 第一个代表
-I
编译器选项(在哪里可以找到头文件)。
- 第二个 -
-L
(在哪里可以找到图书馆)。
正如你所理解的那样,这是不同的事情。
我正在开展一个项目,该项目需要 gstreamer 通过 UPD 将网络摄像头源流式传输到另一台计算机。我整个上午都在尝试在我的 Ubuntu 16.04 上安装 gstreamer,最终我设法使用以下命令让它工作:
sudo apt-get install libgstreamer0.10-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 gstreamer0.10-tools gstreamer-tools gstreamer0.10-doc gstreamer0.10-x
我还修改了项目中的 cmake 文件,以尝试包含 gstreamer 库(参见评论):
cmake_minimum_required(VERSION 3.1.0)
PROJECT(gstreamer-test)
# paths
LINK_DIRECTORIES(/usr/local/lib) # OpenCV
LINK_DIRECTORIES(/usr/include/glib-2.0) #gstreamer
LINK_DIRECTORIES(/usr/include/gstreamer-0.10)
# Build settings
SET(EXECUTABLE_OUTPUT_PATH build/bin)
SET(LIBRARY_OUTPUT_PATH build/lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY build)
# Compiler settings
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
SET(OpenCV_LIBRARIES opencv_core opencv_highgui opencv_videoio -lopencv_calib3d opencv_imgproc -lopencv_imgcodecs opencv_ml opencv_objdetect opencv_features2d opencv_flann)
add_executable(gstreamer_test main.cpp)
TARGET_LINK_LIBRARIES(gstreamer_test ${OpenCV_LIBRARIES})
CLion 仍然拒绝包含 gstreamer。当我尝试从他们的网站 (https://gstreamer.freedesktop.org/documentation/application-development/basics/helloworld.html) 构建教程 'hello world' 应用程序时,它失败了,因为 CLion 找不到包含的 gst/gst.h 和 glib.h 文件。
一些论坛建议使用find_package命令,但我什至不知道这个库的确切包名是什么,我只知道头文件的位置。关于这方面的文档似乎也很少。
有人知道如何在我的项目中正确包含 gstreamer 库吗?
尝试find_package
。您可以使用此模块 https://github.com/WebKit/webkit/blob/master/Source/cmake/FindGStreamer.cmake 并将其放入例如 ./cmake/ 中。比添加到您的 CMakeLists.txt
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)
find_package(GStreamer)
if(GStreamer_FOUND)
message(STATUS "FOUND!!")
include_directories(${GSTREAMER_INCLUDE_DIRS})
endif()
...
target_link_libraries(gstreamer_test ${GSTREAMER_LIBRARIES})
我的 CMake 输出:
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'gstreamer-1.0 >= '
-- Found gstreamer-1.0 , version 1.8.3
-- Checking for module 'gstreamer-base-1.0 >= '
-- Found gstreamer-base-1.0 , version 1.8.3
-- Checking for module 'gstreamer-app-1.0 >= '
--
-- Checking for module 'gstreamer-audio-1.0 >= '
CMakeCache 中的变量:
//Path to a library.
GSTREAMER_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so
只需使用 INCLUDE_DIRECTORIES
而不是 LINK_DIRECTORIES
- 第一个代表
-I
编译器选项(在哪里可以找到头文件)。 - 第二个 -
-L
(在哪里可以找到图书馆)。
正如你所理解的那样,这是不同的事情。