2017-03-01 2 views
1

다른 컴퓨터로 UPD를 통해 웹캠 피드를 스트리밍하려면 gstreamer가 필요한 프로젝트에서 작업하고 있습니다. 내 우분투 16.04에 설치되어있는 GStreamer를 얻기 위해 모든 아침하려고했는데, 결국 나는 다음과 같은 명령을 사용하여 작업 얻을 관리 :CLION by Ubuntu에서 gstreamer를 찾을 수 없습니다. 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를 포함하지 않습니다. 웹 사이트 (https://gstreamer.freedesktop.org/documentation/application-development/basics/helloworld.html)에서 튜토리얼 'hello world'응용 프로그램을 빌드하려고하면 CLION이 포함 된 gst/gst.h 및 glib.h 파일을 찾을 수 없으므로 실패합니다.

find_package 명령을 사용하는 것이 좋습니다. 그러나이 라이브러리의 정확한 패키지 이름이 무엇인지 모르겠지만 헤더 파일의 위치 만 알고 있습니다. 이것에 관한 문서는 너무 부족한 것 같습니다.

누구나 내 프로젝트에 gstreamer 라이브러리를 올바르게 포함시키는 방법을 알고 있습니까?

+0

왜 'cmake'만 호출하면 당신은 CLion을 비난합니까? 그리고'gst/gst.h'는 제공된 경로에서 찾을 수 있습니까? – user1056837

+0

'find_package' 패턴을 사용하십시오 – fandyushin

+0

@ user1056837 박람회 지점, CLion이 도와 줄 수 없습니다. 내 지식이 부족해. 그러나 /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를 올바른 폴더에 넣고 코드를 추가하고 cmakefile을 다시로드했습니다. 그러나 cmake가 라이브러리를 찾았음에도 불구하고 GSTREAMER_LIBRARIES 변수는 여전히 'notfound'로 설정됩니다. 로그는 다음과 같습니다. - FOUND !! CMake 오류 : 다음 변수는이 프로젝트에서 사용되지만 NOTFOUND로 설정됩니다. 을 설정하거나 그들이 CMake 파일에 설정하고 제대로 테스트 확인하십시오 : GSTREAMER_LIBRARIES (ADVANCED) 디렉토리/가정에서 대상 "gstreamer_test"에 의해 연결/lorre851/CLionProjects/gstreamer를 테스트를 –

+0

@LaurentLoots이 모듈 pkgconfig을 사용'을 find_package (PkgConfig)'를 실행하십시오. 이 패키지가 있습니까? 'apt search pkgconfig'가 아니라면 - unstall하고 다시 시도하십시오. 그렇지 않으면 pkgconf를 사용하여 더 간단한 모듈을 검색 할 수 있습니다. – fandyushin

+0

예, pkg-config가 설치되었습니다. cmake 로그에는 다양한 gstreamer 모듈이 설치되어 있으므로 잘 작동합니다. –

1

그냥 대신 INCLUDE_DIRECTORIES를 사용 LINK_DIRECTORIES

  • T 그는 먼저 -I 컴파일러 옵션 (헤더를 찾을 위치)을 의미합니다.
  • 두 번째 - -L (라이브러리를 찾을 위치).

이해 하시겠지만 다른 점이 있습니다.

+0

알겠습니다. INCLUDE_DIRECTORIES를 사용했는데 이제 CLion이 #include 문을 질식시키지 않습니다. 그러나 컴파일 할 때 많은 '정의되지 않은 참조'오류가 생성되고 빌드가 실패합니다. –

관련 문제