最近学习使用cmake,记录一下
目录结构
├── build
├── CMakeLists.txt
├── include
├── src
│ ├── 1440ptest.mp4
│ ├── CMakeLists.txt
│ ├── playback.c
│ └── playback_tutorial_2.c
└── third
顶层cmake
cmake_minimum_required(VERSION 3.10)
project(TestProject)
# 查找 pkg-config
find_package(PkgConfig REQUIRED)
# 设置自定义 pkg-config 路径(如果 GStreamer 安装在非标准位置)
#set(ENV{PKG_CONFIG_PATH} "/home/cc/work/thirdParty/GSt/gstlib/gstreamer-1.0/lib/x86_64-linux-gnu/pkgconfig:/usr/local/glib-2.76.4/lib/x86_64-linux-gnu/pkgconfig:$ENV{PKG_CONFIG_PATH}")
find_library(GSTREAMER_LIB gstreamer-1.0
PATH /home/cc/work/thirdParty/GSt/gstlib/gstreamer-1.0/lib/x86_64-linux-gnu
NO_DEFAULT_PATH
REQUIRED)
find_library(GLIB_LIB glib-2.0
PATH /usr/local/glib-2.76.4/lib/x86_64-linux-gnu
NO_DEFAULT_PATH
REQUIRED)
find_library(GOBJECT_LIB gobject-2.0
PATH /usr/local/glib-2.76.4/lib/x86_64-linux-gnu
NO_DEFAULT_PATH
REQUIRED)
include_directories(
/home/cc/work/thirdParty/GSt/gstlib/gstreamer-1.0/include
/home/cc/work/thirdParty/GSt/gstlib/gstreamer-1.0/include/gstreamer-1.0
/usr/local/glib-2.76.4/include
/usr/local/glib-2.76.4/include/glib-2.0
/usr/local/glib-2.76.4/lib/x86_64-linux-gnu/glib-2.0/include
)
# 使用 pkg-config 查找 GStreamer 和 GLib
#pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0)
#pkg_check_modules(GLIB REQUIRED glib-2.0)
#message(STATUS "GStreamer libraries: ${GSTREAMER_LIBRARIES}")
#message(STATUS "GStreamer include dirs: ${GSTREAMER_INCLUDE_DIRS}")
#message(STATUS "GStreamer library dirs: ${GSTREAMER_LIBRARY_DIRS}")
# 创建可执行文件
#add_executable(${PROJECT_NAME} playback.c)
# 添加子目录
add_subdirectory(src)
src中的CMakeLists.txt
#添加源文件
add_executable(${PROJECT_NAME} playback.c)
target_link_libraries(${PROJECT_NAME}
${GSTREAMER_LIB}
${GLIB_LIB}
${GOBJECT_LIB}
)
option(BUILD_TESTING "Build the testing tree" OFF)
if(BUILD_TESTING)
# 设置包含目录
target_include_directories(${PROJECT_NAME} PRIVATE
${GSTREAMER_INCLUDE_DIRS}
${GLIB_INCLUDE_DIRS}
)
# 添加库搜索路径 - 使用 pkg-config 提供的路径
link_directories(
${GSTREAMER_LIBRARY_DIRS}
${GLIB_LIBRARY_DIRS}
)
# 设置链接库 - 使用 pkg-config 提供的库名
#target_link_libraries(${PROJECT_NAME}
# ${GSTREAMER_LIBRARIES}
# ${GLIB_LIBRARIES}
#)
target_link_libraries(${PROJECT_NAME}
/home/cc/work/thirdParty/GSt/gstlib/gstreamer-1.0/lib/x86_64-linux-gnu/libgstreamer-1.0.so
/usr/local/glib-2.76.4/lib/x86_64-linux-gnu/libgobject-2.0.so
/usr/local/glib-2.76.4/lib/x86_64-linux-gnu/libglib-2.0.so
)
# 设置运行时库路径
#set_target_properties(${PROJECT_NAME} PROPERTIES
# INSTALL_RPATH "${GSTREAMER_LIBRARY_DIRS}:${GLIB_LIBRARY_DIRS}"
# BUILD_WITH_INSTALL_RPATH TRUE
#)
# 添加库搜索路径(如果 pkg-config 没有正确设置)
#link_directories(
# ${CMAKE_SOURCE_DIR}/third/gstreamer/lib
# /home/cc/work/thirdParty/GSt/gstlib/gstreamer-1.0/lib
# /usr/local/glib-2.76.4/lib
#)
endif()
176

被折叠的 条评论
为什么被折叠?



