指定cmake的最低版本:
cmake_mininum_required(VERSION 2.8)

指定项目名称:
project(sylar)

设置cmake变量:
变量是cmake语言存储的基本单元,变量总是字符串类型,且区分大小写。set()/unset()用于指定或者删除某个变量。

    1. 
set(CMAKE_VERBOSE_MAKEFILE ON),将CMAKE_VERBOSE_MAKEFILE的值设置为ON,也可以在执行cmake命令时指定该变量的值,例如cmake -DCMAKE_VERBOSE_MAKEFILE=on


    1. 
set(CMAKE_BUILD_TYPE Debug),CMAKE_BUILD_TYPE用于改变编译状态,支持以下几种:


None:编译器预设
Debug:生成包含调试信息的程序
Release:生成执行速度最佳化的程序
RelWithDebInfo:执行速度最佳化,但仍包含调试信息
MinSizeRel:程序代码最小化

    1. 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11"),设置C++编译参数,在CMAKE_CXX_FLAGS的基础上新增-std=c++11选项、
    2. 
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin),指定执行文件的输出路径
    3. 
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib),指定库文件输出路径


包括头文件路径:
include_directories(.)
include_directories(apps/sylar/include)

指定链接库:
find_library(YAMLCPP yaml-cpp),查找libyaml-cpp.a/so库,如果找到,则将库的完整路径赋值给YAMLCPP变量,如果未找到,则YAMLCPP会被赋值NOTFOUND
message("libyaml-cpp" ${YAMLCPP}),输出一条提示信息,例如:libyaml-cpp:/usr/local/lib/libyaml-cpp.a

添加库:
set(LIB_SRC sylar/log.cc sylar/util.cc sylar/config.cc),将源文件赋值给LIB_SRC变量
add_library(sylar ${LIB_SRC}),将LIB_SRC指定的文件编译成libsylar.so库文件

指定源文件:
aux_source_directory(./test DIR_SRCS),将test目录下的所有文件保存到DIR_SRCS变量

添加可执行文件:
add_excutable(test tests/test.cc),添加一个可执行目标文件test,源代码为test/test.cc
添加目标链接库
target_link_libraries(test sylar ${YAMLCPP})

添加子目录:
add_subdirectory(evernote-thrift),添加一个子目录evernote-thrift,该目录下的CmakeLists.txt文件和源代码也会被处理,例如子目录下的CmakeLists.txt可以如下:

aux_source_directory(. DIR_LIB_SRCS)
add_library(MathFunctions ${DIR_LIB_SRCS})

注释:
# 单行注释 
#[[ 这是
多行注释
]]







  • 无标签