CMake常见语法

CMake常见语法

前言

  1. 每一个需要进行cmake操作的目录下面,都必须存在文件CMakeLists.txt 。
  2. cmake指令不区分大小写
  3. 变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名;
  4. 指令(参数 1 参数 2…),参数使用括弧括起,参数之间使用空格或分号分开;

通过TeamTalk源码学习Cmake语法

  1. 文件目录:/TeamTalk-master/server/src/login_server/CMakeLists.txt

	# CMake 最低版本号要求
	cmake_minimum_required(VERSION 2.6)  
	
	# 项目信息
	PROJECT(loginserver)  
	
	# 查找当前目录下的所有源文件
	# 并将名称保存到 SRC_LIST 变量
	AUX_SOURCE_DIRECTORY(./ SRC_LIST)
	
	# 设置输出文件目录
	SET(EXECUTABLE_OUTPUT_PATH  ../bin)

	# 添加外部库的路径
	if(APPLE)
	    SET(PB_LIB_DIR ../base/pb/lib/mac)
	elseif(UNIX)
	    SET(PB_LIB_DIR ../base/pb/lib/linux)
	endif()
	
	# 为当前路径以及下层路径的目标加入编译器命令行定义
	ADD_DEFINITIONS( -g -W -Wall -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DAC_HAS_INFO
	-DAC_HAS_WARNING -DAC_HAS_ERROR -DAC_HAS_CRITICAL -DTIXML_USE_STL
	-DAC_HAS_DEBUG -DLINUX_DAEMON -std=c++11)
	
	# 向工程添加多个特定的头文件搜索路径。
	# 当项目需要的头文件不在系统默认的搜索路径时,则指定该路径。
	INCLUDE_DIRECTORIES(./ ../base ../base/pb/protocol ../base/jsoncpp/ ../base/pb/)

	# 添加外部库的路径
	LINK_DIRECTORIES(./ ../bin ${PB_LIB_DIR} ../base/slog/lib)

	# 指定生成目标
	# 给出源文件名称,并指出需要编译出的可执行文件名
	ADD_EXECUTABLE(login_server ${SRC_LIST})
	
	# 链接目标文件时需要链接的外部库
	# login_server 为目标文件
	TARGET_LINK_LIBRARIES(login_server base protobuf-lite slog pthread) 

其他命令

1. ADD_LIBRARY

格式:
ADD_LIBRARY(libname [SHARED|STATIC|MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)

  • libname:库文件名称;
  • [SHARED|STATIC|MODULE]:生成库文件类型(共享库/静态库)
  • [EXCLUDE_FROM_ALL]:表示该库不会被默认构建
  • source1, …, sourceN:生成库所依赖的源文件
posted @ 2018-09-06 17:29  eemjwu_boy  阅读(240)  评论(0)    收藏  举报