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目录即可。