cmake

关于cmake 和make 的区别以及什么是cmake这里就不赘述了

实战

下面是我学习sylar 大佬的框架课程中日志模块部分,他写的一个cmake 文件。

其中文件的目录结构为:

bin –二进制
build – 中间文件路径
cmake – cmake 函数文件夹
CMakeLists.txt – cmake 的定义文件
lib – 库的输出路径
sylar – 源代码路径
tests – 测试代码路径


cmake_minimum_required(VERSION 2.8)  # 指定使用的版本
project(sylar)   # 项目名称 一般和项目文件夹相对应 
set(CMAKE_VERBOSE_MAKEFILE ON)  # 显示编译的过程
set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -rdynamic -O0 -ggdb -std=c++11 -Wall -Wno-deprecated -Werror -Wno-unused-function")   # 设置 编译选项  set  设置变量的意思

set(LIB_SRC
	sylar/log.cc
	)  # 设置变量 



add_library(sylar SHARED ${LIB_SRC})     
# 将LIB_SRC下的文件编译为动态链接库 。  SHARED为共享库 ,不加的话就是静态.a

add_executable(test tests/test.cc)   # test为编译后的可执行程序名称, 后面的就是编译文件
add_dependencies(test sylar)  # 这是设置依赖项 
target_link_libraries(test sylar)  # 动态链接库 链接 类似于-lsylar
include_directories(${PROJECT_SOURCE_DIR}/sylar) # 添加头文件的搜索路径 也就是-I
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)  # 可执行文件的输出路径
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) # 设置编译后动态库的路径