CMake 的简单使用

一、CMake介绍

CMake是一种跨平台的构建工具,通过CMakeLists.txt 文件的编写来实现,其中CMakeLists.txt 文件主要用于生成 Makefile文件(通过“cmake PATH”命令),Makefile文件再通过make 命令进行编译,整个构建过程如下:

  1. 编写CmakeLists.txt。
  2. 执行“cmake PATH”命令生成 Makefile文件(PATH 是 CMakeLists.txt 文件所在的路径)。
  3. 执行make 命令生成可执行文件。

二、简单实例

源文件 main.cpp

#include<iostream>
using namespace std;
int main()
{
  cout<<"Hello Cmake!"<<endl;
  return 0;
}

CMakeLists.txt文件

# 该命令表示项目的名称是 Main
PROJECT(Main)
# 限定了 CMake 的版本
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# 将当前目录中的源文件名称赋值给变量 DIR_SRCS,格式为aux_source_directory(<dir> <variable>)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
# 将变量 DIR_SRCS 中的源文件编译成可执行文件main 
ADD_EXECUTABLE(main ${DIR_SRCS})

执行命令:
(1)在 main.cpp 所在的目录执行 cmake .
(2)执行make

三、多源文件目录实例

在这里插入图片描述
在这里插入图片描述
(1)主目录
源文件 main.cpp

#include"src/Test.h"
#include<iostream>
using namespace std;
int main()
{
  printTest();
  cout<<"Hello Cmake!"<<endl;
  return 0;
}

外层文件CMakeLists.txt

PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# 命令 ADD_SUBDIRECTORY 表明项目包含一个子目录 src
ADD_SUBDIRECTORY( src )
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS}  )
# 命令 TARGET_LINK_LIBRARIES 表明可执行文件 main 需要连接Test库 
TARGET_LINK_LIBRARIES( main Test )

补充:程序执行命令 ADD_SUBDIRECTORY( src ) 时会进入子目录 src ,然后执行子目录的 CMakeLists.txt 生成Test库 (子目录的 CMakeLists.txt中编写了库名为Test)
(2)子目录src
源文件Test.cpp

#include"Test.h"
#include<iostream>
using namespace std;
void printTest()
{
  cout<<"I am TEST!"<<endl;
}

头文件Test.h

#ifndef _TEST_H_
#define _TEST_H_

void printTest();

#endif _TEST_H_

内层文件CMakeLists.txt

AUX_SOURCE_DIRECTORY(. DIR_TEST_SRCS)
# 命令 ADD_LIBRARY 将 src 目录中的源文件编译为共享库Test 
ADD_LIBRARY ( Test ${DIR_TEST_SRCS})

执行命令:
(1)在主目录中执行 cmake .
(2)执行make

参考:
https://www.ibm.com/developerworks/cn/linux/l-cn-cmake/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值