1.设置环境变量
//设置cmake最低版本是3.2
cmake_minimum_required(VERSION 3.2)
//设置c++版本
set(CMAKE_CXX_STANDARD 14)
set(CXX_STANDARD_REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
//set 还有指定变量的意思
//PROJECT_SOURCE_DIR 是包含PROJECT()的最近一个CMakeLists.txt文件所在的文件夹
set(LIB_DIR ${PROJECT_SOURCE_DIR}/lib)
2.设置项目的名称 Demo
//CXX:使用语言
project(Demo CXX)
3.将源文件编译成一个可执行文件。
/*
demo: 输出
main.cc :源文件
*/
add_executable(Demo main.cc)
4.保存当前目录下的源文件到变量中
// 查找当前目录下的所有源文件
// 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
//如果不需要加载所有源文件
set(DIR_SRCS main.cc a.cc)
5.添加子目录
// 添加 math 子目录
add_subdirectory(math)
5.添加链接库
//添加MathFunctions到mdeo,MathFunctions 可以是子文件里生成的
target_link_libraries(Demo MathFunctions)
6.生成链接库
//add_library 将 src 目录中的源文件编译为静态链接库。
//STATIC静态库 SHARED动态库
add_library (MathFunctions STATIC
${DIR_LIB_SRCS})
7.找到电脑openssl文件目录
brew --prefix openssl
8.下载静态库demo到bin目录
install(TARGETS demo DESTINATION bin)
9.添加宏
//定义TEST_DEF,初始值为ON
OPTION(TEST_DEF "test definition " ON)
if(TEST_DEF)
add_definitions(-DUSE_TEST=1)
endif()
10.内置变量
//如果是iOS
if (NOT IOS)
//如果是apple
if (APPLE)
/*这三个变量指代的内容是一致的,如果是 in source 编译,指的就是工程顶层目录,
如果是 out-of-source 编译,指的是工程编译发生的目录
*/
CMAKE_BINARY_DIR
PROJECT_BINARY_DIR
<projectname>_BINARY_DIR
/*这三个变量指代的内容是一致的,不论采用何种编译方式,都是工程顶层目录。
也就是在 in source 编译时,他跟 CMAKE_BINARY_DIR 等变量一致
*/
CMAKE_SOURCE_DIR
PROJECT_SOURCE_DIR
<projectname>_SOURCE_DI
其余的见原文
网友评论