cmake记录

cmake比较简单:

####################################################################################

1、在目录添加CMakeLists.txt文件

## build CMakeList of the executable file

#设置环境变量WORK_PROJECT_NAME,内容是ir-x264-live555

set(WORK_PROJECT_NAME ir-x264-live555)

#cmake最低版本

cmake_minimum_required(VERSION 3.4.6)

#工程名叫什么,前面定义了
project(${WORK_PROJECT_NAME})

#设置包含的路径

set(WORK_INCLUDE_DIRS
    ./include
    ./include/live555/
    ./include/seekware/
    ./src
    )

#设置库目录

set(WORK_BUILD_LIBS
    -lliveMedia
    -lgroupsock
    -lBasicUsageEnvironment
    -lUsageEnvironment
    -lx264
    -lseekware
    -lusb-1.0
    )

# c++11 required
#set(CMAKE_CXX_STANDARD 11)   #c++11标准也可以在这里设置。或者使用链接时使用:-std=c++11
#set(CMAKE_CXX_STANDARD_REQUIRED ON)

#TODO:告知当前使用的是交叉编译方式,必须配置
SET(CMAKE_SYSTEM_NAME Linux)

#TODO:指定C交叉编译器,必须配置 TODO:或交叉编译环境器使用绝对地址。
SET(CMAKE_C_COMPILER "/usr/bin/gcc")

#TODO:指定C++交叉编译器,必须配置 TODO:或交叉编译环境器使用绝对地址。
SET(CMAKE_CXX_COMPILER "/usr/bin/g++")

#TODO :添加从c++11
add_compile_options(-std=c++11)

#if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
#  set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/opt/opencv3")
#endif ()

# OpenVC3 required
#find_package(OpenCV 3.4.6 REQUIRED)

# where to find header files
#TODO:添加头文件路径
include_directories(${WORK_INCLUDE_DIRS})
#include_directories("./include")
#include_directories("./include/live555/")
#include_directories("./include/seekware/")
#TODO:添加opencv动态链接库路径
LINK_DIRECTORIES("./lib")

# sub directories
#add_subdirectory(thirdparty)

# sources to be compiled。设置需要编译的文件
set(SOURCE_FILES
    src/liveRtspServer.cpp
    src/dyPicFramedSource.cpp
    src/H264VideoDyServerMediaSubsession.cpp
    src/readSeekData.cpp
    src/x264Work.cpp
        )

# pack objects to static library。添加静态链接库,SHARED动态库
add_library(${WORK_PROJECT_NAME} STATIC ${SOURCE_FILES})

#设置执行文件名

if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
  set(EXECUTABLE_NAME "demo_darwin_amd64")
elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
  set(EXECUTABLE_NAME "test_rtsp_linux")
endif ()

# test cases添加执行文件,执行文件的入口文件,也就是包含main函数的文件
add_executable(${EXECUTABLE_NAME} src/testIrX264Live.cpp)
# link opencv libs,指定在链接目标文件的时候需要链接到外部库,其效果类似gcc的编译参数“-l”,可以解决外部库的依赖问题。
target_link_libraries(${EXECUTABLE_NAME} ${WORK_PROJECT_NAME} ${WORK_BUILD_LIBS} -ldl -lm -lpthread -lrt)
###############################################################################################

2、把源文件和头文件以及库文件,添加到对应目录,执行"cmake ."即可生成makefile文件

3、执行make即可编译。

4、工程只需要一个CMakeLists.txt和源文件,头文件,库文件即可

 

问题点:

1、 cmake2.8不识别add_compile_options,用add_definitions(-std=c++11)代替

2、cmake没有clean,如果cmake有子目录,不好删除,在工程根目录下建个build目录,在build目录执行 cmake ../即可,清除时删除build目录即可。

你可能感兴趣的:(cmake记录)