C++分文件编写VS Code和CMakeLists使用详解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录


Windows 10 + Ubuntu 20.04 + VS Code


一、示例代码

1.1 主函数main.cpp

要用双引号包含子函数的头文件第二行

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

using namespace std;

int main()
{
    int a = 10;
    int b = 20;
    swap(a,b);
    
    return 0;
}

1.2 子函数源文件

要用双引号包含子函数的头文件第一行
定义子函数具体内容

#include "swap.h"
void swap(int a, int b)
{
    int stem = a;
    a = b;
    b = stem;
    
    std::cout << "a: " << a << std::endl;
    std::cout << "b: " << b << std::endl;
}

1.3 子函数头文件

包含通用 iostream第一行
声明该子函数

#include<iostream>
using namespace std;

void swap(int a, int b);

二、VS Code编译

2.1 报错

在VS Code中新建文件写入上述代码并ctrl+s保存。选择系统里的编译器编译时报错
undefined reference to `swap(int, int)’
在这里插入图片描述

2.2解决方法

将子函数分文件路径添加到tasks.json中使其链接到子函数源文件。记得保存一下再编译
可以点击小三角编译也可以在终端输入指令编译
在这里插入图片描述

三、CMakeLists编译

使用aux_source_directory命令查找制定目录下所有的源文件然后把结果保存进指定的变量名语法格式为
aux_source_directory(<dir> <variable>)

# CMake最低版本要求
cmake_minimum_required(VERSION 2.8)
# 项目信息
project(fuction_files)
# 指定当前目录下的源文件保存到<ALL_SRCS>变量中
aux_source_directory(. ALL_SRCS)
# 制定生成目标
add_executable (fuction_files main.cpp swap.cpp ${ALL_SRCS})


参考资料
链接: VS Code编译
链接: CMakeLists编译

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: c++