【CMake】第2篇 CMake构建.h与.cpp文件

目录

1、文件目录结构

add.h

 add.cpp

main.cpp

CMakeLists.txt

2、CMake构建项目

3、构建工程优化

使用 aux_source_directory(./src SRC_LIST)

 4、优化目录,生成可执行文件到bin下


1、文件目录结构

首先来看一下目前的目录结构:

add.h

#ifndef ADD_H
#define ADD_H

int add(int numA, int numB);

#endif

 add.cpp

#include "add.h"

int add(int numA, int numB)
{
    return numA + numB;
}

main.cpp

#include <iostream>
#include "add.h"

int main()
{
   std::cout << "numA + numB = " << add(10,20) <<std::endl;
   return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(test)
include_directories(./include)
set(SRC_LIST ./src/add.cpp ./src/main.cpp)
add_executable(main ${SRC_LIST})
  •  cmake_minimum_required(VERSION 2.8)

指定cmake的最小版本。

  • project(test)

设置项目名称。

  • include_directories(./include)

用来包含头文件目录。

  • set(SRC_LIST ./src/add.cpp ./src/main.cpp)

用来定义变量,使用${}取出值。

2、CMake构建项目

 进入build目录:

cd build/

执行cmake ..

cmake ..

执行make 

make

 执行main文件

./main 

3、构建工程优化

上述使用:

set(SRC_LIST ./src/add.cpp ./src/main.cpp)

用来指定源码位置,但是如果src文件夹下面有几千几百个源文件的话,难道要添加上百次???

适合源码文件比较少的情况下。

使用 aux_source_directory(./src SRC_LIST)

选择src文件夹下面的所有文件。

cmake_minimum_required(VERSION 2.8)
project(test)
include_directories(./include)
aux_source_directory(./src SRC_LIST)
add_executable(main ${SRC_LIST})

然后执行:

cd build
cmake ..
make
./main

结果展示:

 4、优化目录,生成可执行文件到bin下

目录结构:

 修改CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8)
project(test)
add_subdirectory(./src)

当cmake执行到第三行时,去src目录下找CMakeLists.txt文件。

cmake_minimum_required(VERSION 2.8)
project(test)
aux_source_directory(./ SRCLIST)
include_directories(../include) 
add_executable(main ${SRCLIST})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)

EXECUTABLE_OUTPUT_PATH:目标二进制可执行文件存放的位置
PROJECT_SOURCE_DIR:代表的工程的路径
PROJECT_BINARY_DIR:代表编译的是编译的路径

 执行如下操作:

cd build
cmake ..
make
cd ..
cd bin
./main

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式职场

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值