cmake使用记录

最近学习使用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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值