2017-03-01 21 views
1

私はgstreamerがUPD経由で別のコンピュータにウェブカメラフィードをストリーミングする必要があるプロジェクトに取り組んでいます。私は私のUbuntu 16.04にインストールされているのgstreamerを取得するために、すべての午前しようとしてきた、最終的に私はそれが次のコマンドを使用して作業を取得するために管理:gstreamerがUbuntuのCLionで見つかりません16.04 LTS

私はまた、取得しようとする試みで私のプロジェクトで私のcmakeのファイルを変更し
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 

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を含めることを拒否しています。チュートリアルの「hello world」アプリケーションをウェブサイト(https://gstreamer.freedesktop.org/documentation/application-development/basics/helloworld.html)からビルドしようとすると、CLIONが含まれているgst/gst.hとglib.hファイルを見つけることができないため失敗します。

find_packageコマンドを使用することをお勧めしますが、このライブラリの正確なパッケージ名が何であるかわかりません。ヘッダーファイルの場所のみがわかります。これに関するドキュメンテーションもあまりないようです。

私のプロジェクトにgstreamerライブラリを正しく組み込む方法を知っている人はいますか?

+0

なぜ「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

try 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を正しいフォルダに置き、コードを追加してcmakefileをリロードしました。しかし、ライブラリがcmakeによって見つかったにもかかわらず、GSTREAMER_LIBRARIES変数はまだ 'notfound'に設定されています。ログは次のとおりです。 - FOUND !! CMakeエラー:このプロジェクトでは次の変数が使用されていますが、NOTFOUNDに設定されています。'pkgconfigを使用して GSTREAMER_LIBRARIES(ADVANCED) ディレクトリ/ homeにターゲット「gstreamer_test」によってリンク/ lorre851/CLionProjects/gstreamerのテスト –

+0

@LaurentLootsこのモジュール: それらを設定したり、設定やCMakeのファイルに正しくテストされていることを確認してくださいfind_package(PkgConfig) 'を実行します。あなたはこのパッケージを持っていますか? 'apt search pkgconfig'がなければ、unstallしてもう一度やり直すか、pkgconfを使ってより簡単なモジュールを検索することができます。 – fandyushin

+0

はい、pkg-configがインストールされています。 cmakeログには、インストールされているさまざまなgstreamerモジュールも表示されるので、うまく動作すると思います。 –

1

ちょうど代わりにINCLUDE_DIRECTORIESを使用LINK_DIRECTORIES

  • T彼は最初に-Iコンパイラオプション(ヘッダーを見つける場所)の略です。
  • 第2 - -L(どこにライブラリを見つけるか)。

理解していただいたとおり、さまざまなことがあります。

+0

私は参照してください。私はINCLUDE_DIRECTORIESを使用しましたが、CLionは#includeステートメントでこれ以上チョークしません。しかし、コンパイルすると、多くの '未定義参照'エラーが生成され、ビルドに失敗します。 –

関連する問題