cmake简单示例

本文介绍了一个简单的C++类Box的实现,包括成员函数的声明与定义,并通过CMake进行项目构建与管理。此外,还展示了如何利用CMakeLists.txt文件配置项目,以及如何在CMake中设置不同类型的构建目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,代码头文件:example.h

#include<iostream>
using namespace std;
class Box
{
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度
   public:

      // 成员函数声明
      double get(void);
      void set( double len, double bre, double hei );
      //当声明了非默认的构造函数之后默认的构造函数就不能用了;
      //如果要用默认的构造函数则需要显示声明;
      Box(double len, double bre, double hei);
      Box();//显示声明默认的构造函数;
      ~Box();

};

2,代码源码: example.cc

#include "example.h"

// 成员函数定义
double Box::get(void)
{
    return length * breadth * height;
}
 
void Box::set( double len, double bre, double hei)
{
    length = len;
    breadth = bre;
    height = hei;
}

Box::Box(double len, double bre, double hei ){
    length = len;
    breadth = bre;
    height = hei;

}

Box::Box(void){
    cout << "BOX INITIALIZATION" << endl;
}

//如果cpp文件中定义了析构函数,那么头文件中也必须声明;
Box::~Box(void){
    cout << "BOX destroy" << endl;
}

int main(){
    
    Box box;
    box.set(0.2, 0.3, 0.4);
    cout << "box's area is " << box.get()<< endl;
    Box box1(0.1, 0.2, 0.4);
    cout << "box's area is " << box1.get()<< endl;

    int a[5] = {5, 2, 6, 8 ,9} ;

    for(int i = 0 ; i < 5; i++ ){
        int tmp = a[i];
        if (a[i] > a[i+1])
        {
            a[i] = a[i+1];
            a[i+1] = tmp;
        }
    }

    for(int i = 0 ; i < 5; i++ ){
        cout << a[i]<<" ";
    }
    cout << endl;
    
    
}

3,一个简单的CMakeList.txt

cmake_minimum_required(VERSION 2.8.3)
project(example)

#==============
# executables =
#==============

add_executable(example src/example.cc;src/example.h)

#可执行文件的名称为 example;
# 如果CmakeLists.txt与源文件在一个文件下 则不用指定目录;

4,目录结构:



5、基本的语法规则
使用${}方式来取得变量中的值,而在IF语句中则直接使用变量名。
指令(参数1 参数2 …)
参数之间使用空格或者分号分隔开。如果加入一个函数fun.c

ADD_EXETABLE(hello main.c;fun.c)
指令是大小写无关的,参数和变量是大小写相关的。但是推荐你全部使用大写指令。

6、关于语法的困惑
可以使用双引号“”将源文件包含起来。处理特别难处理的名字比如fun c.c,则使用SET(SRC_LIST "fun c.c")可以防止报错。

7、清理工程
可以使用make clean清理makefile产生的中间的文件,但是,不能使用make distclean清除cmake产生的中间件。如果需要删除cmake的中间件,可以采用rm -rf *来删除中间件。

8、外部构建

mkdir build
cmake ..
make

在目录下建立一个build文件用来存储cmake产生的中间件,不过需要使用cmake ..来运行。其中外部编译,PROJECT_SOURCE_DIR仍然指代工程路径,即/backup/cmake/t1,而PROJECT_BINARY_DIR指代编译路径,即/backup/cmake/t1/build。

9、运行

找到可执行文件的目录:

./example

10,运行结果

BOX INITIALIZATION
box's area is 0.024
box's area is 0.008
2 5 6 8 9 
BOX destroy
BOX destroy


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值