完成一个简单程序的构建
创建一个新的文件夹,包含以下两个文件
- main.c
#include <stdio.h>
int main()
{
printf("Welcome to my Blog!\n");
return 0;
}
- CMakeLists.txt
PROJECT(HELLO)
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})
开始构建:
mkdir build
cd build
cmake .. #开始构建
make #工程的实际构建
./hello #执行生成的可执行文件
build下生成的文件:
CMkeLists.txt文件配置的含义
PROJECT(HELLO)
格式:PROJECT( projectname [CXX] [C] [Java])
1.用来定义工程的名称;这里也可以写成SET(SRC_LIST “main.c”)
2.隐式的定义两个cmake变量:
<projectname>_SOURCE_DIR (指代工程路径)
<projectname>_BINARR_DIR (指代编译路径)
前面的工程名是用户自主定义的;(这里直接将这两个变量使用MESSAGE打印出来了)SET(SRC_LIST main.c)
格式:SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE])
这里主要用来显式的定义变量,如果有多个源文件依次定义即可SET(main.c mian2.c mian3.c)MESSAGE
格式:MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] “message to display”…)
用于向终端输出用户定义的信息,包含了三种类型:
SEND_ERROR: 产生错误,生成过程被跳过。
SATUS: 输出前缀为—的
FATALERROR: 立即终止所有 cmake 过程ADD_EXECUTABLE(hello ${SRC_LIST})
定义了这个工程会生成一个文件名为 hello 的可执行文件,相关的源文件是 SRC_LIST 中定义的源文件列表,这里的CMakeLists.txt可以改为简写:
PROJECT(HELLO)
ADDEXECUTABLE(hello main.c)