2017-03-01 132 views
1

我正在開發一個項目,該項目需要gstreamer通過UPD將網絡攝像頭數據流傳輸到另一臺計算機。我一上午都試圖讓安裝在我的Ubuntu 16.04的GStreamer,最終我設法得到它的工作使用下面的命令:在Ubuntu 16.04上找不到CLS的gstreamer LTS

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庫?

+0

你爲什麼責怪CLION,它只調用'cmake'?你確定,'gst/gst.h'可以通過提供的路徑找到嗎? – user1056837

+0

使用'find_package'模式 – fandyushin

+0

@ user1056837公平點,CLion無法幫助它。這是我缺乏cmake知識。但是,我確信/usr/include/gstreamer-0.10/gst/gst.h和/usr/include/glib-2.0/glib.h的路徑是正確的。 –

回答

1

嘗試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 
+0

感謝您的代碼。我將FindGstreamer.cmake放在正確的文件夾中,添加了代碼並重新加載了cmake文件。但是,儘管cmake可以找到庫,但GSTREAMER_LIBRARIES變量仍然被設置爲「notfound」。這裏是日誌: - 發現! CMake錯誤:在此項目中使用以下變量,但它們被設置爲NOTFOUND。 請設置它們或者確保它們被正確地設置並測試了CMake的文件: GSTREAMER_LIBRARIES(高級) 的目標「gstreamer_test」,在目錄/ home鏈接/ lorre851/CLionProjects/GStreamer的測試 –

+0

@LaurentLoots該模塊使用pkgconfig' find_package(PkgConfig)'。你有這個包嗎? 'apt搜索pkgconfig'如果不是 - unstall並且再試一次,或者你可以用pkgconf搜索更簡單的模塊。 – fandyushin

+0

是的,pkg-config已安裝。 cmake日誌還顯示已安裝的各種gstreamer模塊,所以我猜這很好用 –

1

只需使用INCLUDE_DIRECTORIES代替LINK_DIRECTORIES

  • ŧ他首先代表-I編譯器選項(在哪裏可以找到標題)。
  • 第二個 - -L(哪裏可以找到庫)。

正如你明白這是不同的事情。

+0

我明白了。我使用了INCLUDE_DIRECTORIES,現在CLION不再扼殺#include語句。但是,在編譯時,會產生大量'未定義的引用'錯誤,並且構建失敗。 –