渭南商铺网站建设,wordpress恋月,专业装修别墅,合肥集团网站建设公司CMake是一个跨平台的自动化构建系统#xff0c;可以用简单的语句来描述所有平台的编译过程。CMake可以输出各种各样的编译文件#xff0c;如Makefile、VisualStudio等。 CMake主要是编写CMakeLists.txt文件#xff0c;然后用cmake命令将CMakeLists.txt文件转化为make所需要的… CMake是一个跨平台的自动化构建系统可以用简单的语句来描述所有平台的编译过程。CMake可以输出各种各样的编译文件如Makefile、VisualStudio等。 CMake主要是编写CMakeLists.txt文件然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件最后用make命令编译源码生成可执行程序或共享库so (shared object)。 你可以在CMakeLists.txt中指定源文件、头文件、库文件、链接库等信息然后通过cmake命令生成相应的makefile文件。 文章目录1. 单main.c文件输出hello world2. 使hello world更像一个工程文件1. 单main.c文件输出hello world
mian.c
#include stdio.h
int main(){printf(hello world!\n);return 0;
}CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
PROJECT(HELLO)
SET(CMAKE_C_COMPILER gcc)SET(SRC_LIST main.c)
MESSAGE(STATUS This is BINARY dir ${HELLO_BINARY_DIR})
MESSAGE(STATUS This is SOURCE dir ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})cmake_minimum_required(VERSION X.X) : 指定cmake的最低版本。 project( project_name ) : 指定工程名称这个指令隐式的指定了两个CMake变量那就是project_name_BINARY_DIRproject_name_SOURCE_DIR。在这个例程中我们命名project_name为HELLO所以也指定了HELLO_BIARY_DIR和HELLO_SOURCE_DIR。所以当我们更改了工程名之后project_name_BINARY_DIR和project_name_SOURCE_DIR也要跟着改变。但是如果我们使用PROJECT_BINARY_DIR和PROJECT_BINARY_DIR那么工程名随便改动这两个变量名会随之改变。 MESSAGE(STATUS This is BINARY dir ${PROJECT_BINARY_DIR})
MESSAGE(STATUS This is SOURCE dir ${PROJECT_SOURCE_DIR})set(CMAKE_C_COMPILER gcc) : 指定CMake使用gcc编译器来编译C代码 SET(SRC_LIST main.c) : SET 还可以显式的定义变量语法是这样的 SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]) 现阶段你只需要知道SET可以显式的定义变量即可。如果有多个源文件还可以这样定义SET(SRC_LIST main.c t1.c t2.c) MESSAGE的语法是这样的 MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] message to display ...)这个指令用于向终端输出用户定义的信息包含了三种类型: SEND_ERROR产生错误生成过程被跳过。 CMake Error at CMakeLists.txt:6 (MESSAGE): This is BINARY dir/home/zch/CmakePratice/t1/build CMake Error at CMakeLists.txt:7 (MESSAGE): This is SOURCE dir/home/zch/CmakePratice/t1 SATUS输出前缀为–的信息。 – This is BINARY dir/home/zch/CmakePratice/t1/build – This is SOURCE dir/home/zch/CmakePratice/t1 FATAL_ERROR立即终止所有 cmake 过程. CMake Error at CMakeLists.txt:6 (MESSAGE): This is BINARY dir/home/zch/CmakePratice/t1/build – Configuring incomplete, errors occurred! ADD_EXECUTABLE(hello ${SRC_LIST}) 定义了这个工程会生成一个文件名为 hello 的可执行文件相关的源文件是 SRC_LIST 中 定义的源文件列表 本例中你也可以直接写成 ADD_EXECUTABLE(hello main.c)。
2. 使hello world更像一个工程文件