CMakeLists.txt文件格式:
# 设置运行此配置文件所需的CMake最低版本
cmake_minimum_required(VERSION 3.6)
# 设置项目名称
project(ProName)
# 添加一个可执行文件
add_executable(ExeName main.cpp)
target_link_libraries(rtmp ${XHR_LIBS} ${OpenCV_LIBS})
编译:
$ cd build
$ cmake ..
$ make
指定头文件路径: 可多次调用
include_directories(/usr/include)
include_directories(${PROJECT_SOURCE_DIR}/include)
指定库文件路径: 可多次调用
link_directories(${PROJECT_SOURCE_DIR})
添加编译参数
add_compile_options(-wall -std=c++11 -o2)
设置用户自定义变量: 多次设置同一变量会被覆盖
set(XHR_SRC main.cpp utils.cpp)
环境变量:
${PROJECT_SOURCE_DIR} - 源代码目录
${PROJECT_BINARY_DIR} - 生成文件目录
设置OpenCV
find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBS})
设置CUDA
# cuda
include_directories(/usr/local/cuda/include)
link_directories(/usr/local/cuda/lib64)
find_package会导出xxx_INCLUDE_DIRS和xxx_LIBS两个相关的变量,用于编译
find_package区分大小写(OpenCV, CUDA)
宏定义说明: 通过cmake命令指定的宏,必须再CMakeLists中重新定义,才能实现全局宏定义
if(HELLO)
message(STATUS "Hello")
add_definitions(-DHELLO=${HELLO})
endif(HELLO)
$ cmake -DHELLO=1 ..
提示信息:
message(STATUS "HelloWorld")
查找所有源文件
aux_source_directory(. DIR_SRCS)
生成动态库: libxxx.so
add_library(xxx SHARED bbb.c)
生成静态库: libxxx.a
add_library(xxx STATIC aaa.c)
生成可执行文件:
add_executable(xxx SHARED aaa.c)
# 需要链接
target_link_libraries(xxx ${USER_LIBS})
- 阅读全文 -