ubuntu系统CMakeLists例子

ubuntu系统CMakeLists例子

首先使用mkdir命令创建一个文件夹cmake01用于保存文件
然后在该文件夹下创建main.cpp文件,将下面代码写入main.cpp文件中并保存

include
using namespace std;
int main()
{
cout<<"helllword"<

创建一个CMakeLists.txt文件(注意区分大小写)
然后将下面代码写入文件并保存

PROJECT (HELLO)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS "this is BINARY dir" ${HELLO_BINARY_DIR})
MESSAGE(STATUS "this is SOURCE dir "${HELLO_SOURCE_DIR})
ADD_EXECUTABLE (hello ${SRC_LIST})

使用cmake命令编译CMakeLists文件,编译成功后如下
ubuntu系统CMakeLists例子_第1张图片
编译完成后会出现以下文件
在这里插入图片描述
使用make命令执行Makefile得到一个可执行文件hello,执行./hello文件,到此为止CMakeLists就执行成功了
ubuntu系统CMakeLists例子_第2张图片
下面解释一下CMakeLists中各项参数的用法
project关键字
可以用来指定工程的名字和支持的语言,默认支持所有语言
PROJECT(HELLO)制定了工程的名字,并且支持所有语言
PROJECT (HELLO CXX)指定了工程的名字,并且支持语言是c++
PROJECT (HELLO C CXX JAVA)指定了工程的名字,并且支持语言是C C++ JAVA
隐式定义了两个CMAKE的变量
_BINARY_DIR,本例中是HELLO_BINARY_DIR
_source_DIR,本例中是HELLO_SOURCE_DIR
MESSAGE 关键字就可以直接使用两个变量,当前都指向当前的工作目录,
问题:如果改了工程名,这两个变量名也会改变
解决:又定义两个预定义变量,PROJECT_BINARY和PROJECTSOURCE_DIR,这两个变量和HELLO_BINARY_DIR,HELLO_SOURCE_DIR 是一致的

SET关键字
用来显示指定变量的
SET(SRC_LIST main.cpp) SRC_LIST变量就包含main.cpp
也可以SET(SRC_LIST main.cpp test1.cpp test2.cpp)

MESSAGE 关键字
向终端输出用户自定义的信息
主要包含三种信息:
SEND_ERROR,产生错误,生产过程被跳过
STATUS,输出前缀为-的信息
FATAL_ERROR 立刻终止所有cmake过程

ADD_EXECUTABLE关键字
生成可执行文件
ADD_EXECUTABLE(HELLO ${SRC_LIST}) 生成可执行文件名为hello ,源文件读取变量SRC—_LISTZ中的内容,也可以直接写成ADD_EXECUTABLE(hello main.cpp)
上述例子可以简化的写成
PROJECT(HELLO)
ADD_EXECUTABLE(hello main.cpp)
注意工程名的HELLO和生成可执行文件名的hello是没有任何关系的

你可能感兴趣的:(ubuntu,linux,运维,c++)