作用:用来生成MakeFile;
优点:跨平台
官方教程:
https://cmake.org/documentation/ | //文档总链接地址 |
https://cmake.org/cmake/help/latest/guide/tutorial/index.html | //培训教程 |
单个文件:
project(HELLO) //设置工程名;
add_executable(hello ./main.c) //生成可执行文件 名称;所需源文件
多个源文件:
project(HELLO) //
set(SRC_LIST main.c hello.c) //定义了变量SRC_LIST
add_executable(hello ${SRC_LIST}) //相当于add_executable(hello main.c hello.c)
生成库文件:
project(HELLO)
add_library(libhello hello.c)//生成静态库文件;
add_executable(hello main.c)
target_link_libraries(hello libhello)//为目标指定库文件;
将源文件组织到不同目录:
顶层 CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(HELLO)
add_subdirectory(libhello)//
add_subdirectory(src) //让cmake 去子目录中寻找新的CMakeLists.txt 文件并解析它;
src 目录下的 CMakeLists.txt
include_directories(${PROJECT_SOURCE_DIR}/libhello)
//include_directories 命令用来指明头文件所在的路径,并且使用到了 PROJECT_SOURCE_DIR 变量,该变量表示工程源码的目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
//可执行文件存放在 build 目录下的 bin 目录中
add_executable(hello main.c)
target_link_libraries(hello libhello)
libhello 目录下的 CMakeLists.txt
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
//将库文件存放在 build 目录下的 lib 目录中
add_library(libhello hello.c)
set_target_properties(libhello PROPERTIES OUTPUT_NAME "hello")
最终结构:
├── build
│ ├── bin
│ │ └── hello
│ └── lib
│ └── libhello.a
├── CMakeLists.txt
├── libhello
│ ├── CMakeLists.txt
│ ├── hello.c
│ └── hello.h
├── src
├── CMakeLists.txt
└── main.c