//设置cmake支持的最低版本
cmake_minimum_required (VERSION 2.6)//配置项目名称,使用此命令后会自动生成
//PNAME_BINARY_DIR变量(二进制文件保存路径),PNAME_SOURCE_DIR(源代码路径)
project (工程名称)//设置版本号
SET (变量名 变量值)
SET (VERSION 0)
SET(SRC_LIST main.c t1.ct2.c)
//文件拷贝,并进行宏替换
configure_file (
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
"${PROJECT_BINARY_DIR}/TutorialConfig.h"
) //向工程添加多个特定的头文件搜索路径,路径之间用空格分隔,如果路径包含空格,
//可以使用双引号将它括起来。默认的行为是追加到当前头文件搜索路径的后面。
//有如下两种方式可以控制搜索路径添加的位置:CMAKE_INCLUDE_DIRECTORIES_BEFORE,
//通过SET这个cmake变量为on,可以将添加的头文件搜索路径放在已有路径的前面
//通过AFTER或BEFORE参数,也可以控制是追加还是置前
include_directories("${PROJECT_BINARY_DIR}")//生成可执行文件
add_executable(可执行文件名 生产该可执行文件的源文件)//添加子目录,它会去子目录中寻找CmakeLists.txt,然后执行它
ADD_SUBDIRECTORY(subdir)//将一个文件下的编译用的源文件添加到一个宏列表中,
//它只是将.cc .cpp .c的文件添加到SRC_LIST中,.h除外
AUX_SOURCE_DIRECTORY(. SRC_LIST)
//如果你想将.h文件也加进来,使用下面脚本,GLOB这个参数,它不支持子目录,
//如果你想让它支持子目录,用GLOB_RECURSE。
file (GLOB HEADERS "include/*.h")
SET(SRC_LIST ${SRC_LIST} ${HEADERS})//检查一个文件或目录是否存在
if(NOT EXISTS ${APR_ROOT})
endif()
LINK_DIRECTORIES
LINK_DIRECTORIES(dir1 dir2 …)
添加非标准的共享库搜索路径TARGET_LINK_LIBRARIES
TARGET_LINK_LIBRARIES(target lib1 lib2 …)
//为target添加需要链接的共享库,后面可添加域限定关键字PUBLIC PRIVATE INTERFACE
//关键字的说明如下参考
//https://stackoverflow.com/questions/26037954/cmake-target-link-libraries-interface-dependencies
官网教程:https://cmake.org/cmake-tutorial/
官网手册:https://cmake.org/cmake/help/v3.0/module/CMakeParseArguments.html
参考:https://www.cnblogs.com/coderfenghc/archive/2012/06/20/2556996.html