cmake 入门笔记

学习camke为了大型的工程编译

预备知识:

1.Linux 基本命令:如 ls ,cd,vim ,apt或yum (不同Linux系统所使用的下载程序不同),cat等

2.Linux 下载cmake (一般自带)

3.c/c++形成可执行文件的过程

1. 单个源文件(初如cmake)

法一:

gcc -o main main.c

法二:

g++ -o main main.cpp

法三:

step1: 写一个.cpp文件 放入一个空文件夹下

step2: 在此文件夹下写CMakeLists.txt 

#CMakeLists.txt
PROJECT(HELLO)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS "This is BINARY dir" ${HELLO_SOURCE_DIR})
MESSAGE(STATUS "This is BINARY dir" ${HELLO_BINARY_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

step3: 使用cmake 生成makefille文件

cmake . 

在当前位置cmake(产生makeflie文件)

产生的文件:

 step4 在当前文件位置编译makeflie

make

产生可执行文件 main

step5  执行可执行文件

./main

-----------------------------------------------------

cmake 语法介绍:

#CMakeLists.txt
PROJECT(HELLO)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS "This is BINARY dir" ${HELLO_SOURCE_DIR})
MESSAGE(STATUS "This is BINARY dir" ${HELLO_BINARY_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

PROJECT关键字   用来指定工程的名字 和支持的语言,默认支持所有语言

         PROJECT (HELLO) 指定工程名称为 HELLO

         PROJECT(HELLO CXX)工程名为HELLO 并且支持c++

         PROJECT(HELLO C CXX)工程名为HELLO 并且支持c和c++

          该指定隐式定义了两个cmake变量 tips:<projectname>为项目名

         <projectname>_BINARY_DIR   本例中为 HELLO_BINARY_DIR

        <projectname>_SOURCCE_DIR   本例中为 HELLO_SOURCE_DIR

       MESSAGE 关键字就可以直接使用这两个变量 当前都指向当前的工作目录,后面会讲外部编译 

  如果更改了工程名,这两个变量名也会改变

两个预定义变量 PROJECT_BINARY_DIR和PROJECT_SOURCCE_DIR 这两个变量与HELLO_SOURCE_DIR  HELLO_BINARY_DIR一致

SET关键词

        用来显示指定变量的

        SET(SRC-LIST main.cpp )    SRC_LIST 变量包含了 main.cpp

        也可以为SET(SRC_LIST main.cpp t1.cpp t2.cpp)

MESSAGE关键词

向终端输出自定义信息

        包含三种

         SEND_ERROR  产生错误 生成过程被跳过

        SATUS   输出前缀唯一的信息

        FATAL_ERROR  立即终止所有 cmake过程

如本例中这个关键词会输出

 

ADD_EXECUTABLE关键字

        生成可执行文件

        ADD_EXECUTABLE(hello ${SRC_LIST}) 生成可执行文件名为hello   源文件读取变量                    SRC_LIST中的内容也可以直接写为ADD_EXECUTABLE(hello main.cpp)

上述例子可以简化为:

PROJECT(HELLO)

ADD_EXECUTABLE(hello main.cpp)

注意工程名HELLO与 可执行文件名hello 无关

语法的基本原则

变量使用${}方式取值  但在IF语句中是直接使用变量名

指令(参数1 参数2......)参数使用括弧扩起 参数之间使用空格 分号分开 以ADD_EXECUTABLE(hello  main.cpp)为例

指令无关大小写 而变量 参数与大小写有关

推荐全部大写 

语法注意 

SET(SRC_LIST main.cpp)可以写为SET(SRC_LIST  ”main.cpp“) 如果文件名有空格 必须要加“”

ADD_EXECUTABLE(hello main)后缀可不写 会自动寻找.c .cpp 尽量不要这么写 

内部构建 和外部构建

上述为内部构件 产生临时文件多不便清理、

外部构建是把 cmake生成文件放入build文件夹中方便重新编译

2.

猜你喜欢

转载自blog.csdn.net/m0_73580268/article/details/130088325