VSCode CC++项目多个源文件调试

本文介绍了如何使用CMakeLists.txt配置一个包含多个源文件的VSCode项目,涉及头文件管理、源文件添加和调试设置。重点讲解了`include_directories`和`aux_source_directory`命令的作用。
摘要由CSDN通过智能技术生成

目录结构如下

E:.
│   CMakeLists.txt
│   main.c
│   tree.txt
│
├───.vscode
│       settings.json
│
├───include
│       main.h
│       test.h
│
└───src
        test.c

文件内容

//main.h
#ifndef _MAIN_H
#define _MAIN_H

#include <stdio.h>
#include "test.h"

#endif

//main.c
#include "main.h"

int main(int argc, char const *argv[])
{
    int res = add(2, 3);
    printf("%d\n", res);
    return 0;
}
//test.h
#ifndef _TEST_H
#define _TEST_H

int add(int a, int b);

#endif
//test.c
#include "test.h"

int add(int a, int b) {
    return a + b;
}

重点关注下面的文件

#CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(tt VERSION 0.1.0 LANGUAGES C)

# 由CMake tools创建的无需改变得内容
include(CTest)
enable_testing()
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

# 以下内容是修改过或者添加的
# 将项目根目录的源文件加入ALL_SOURCE变量
aux_source_directory(. ALL_SOURCE)
# 将项目根目录下src目录的源文件加入ALL_SOURCE变量
aux_source_directory(${PROJECT_SOURCE_DIR}/src ALL_SOURCE)
# 包括头文件文件夹
include_directories(${PROJECT_SOURCE_DIR}/include)
# 用ALL_SOURCE中的所有源文件构建项目,可执行文件的名字为main
add_executable(main ${ALL_SOURCE})

语句说明

include_directories ([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …])
  • 命令格式

            include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
    

    将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。

  • 命令解析

    默认情况下,include_directories命令会将目录添加到列表最后,可以通过命令设置CMAKE_INCLUDE_DIRECTORIES_BEFORE变量为ON来改变它默认行为,将目录添加到列表前面。也可以在每次调用include_directories命令时使用AFTERBEFORE选项来指定是添加到列表的前面或者后面。如果使用SYSTEM选项,会把指定目录当成系统的搜索目录。该命令作用范围只在当前的CMakeLists.txt。

aux_source_directory(<DIR> <VAR_NAME>)
  • 命令解析

    查找DIR目录下的所有源文件,并将其放入VAR_NAME变量。

include_directories()
  • 命令格式
       add_executable (<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [source1] [source2 ...])
    
    使用指定的源文件来生成目标可执行文件。这里的目标可执行文件分为三类:普通可执行目标文件导入可执行目标文件别名可执行目标文件。分别对应上面的三种命令格式。
  • 命令解析
    • <name> 生成的可执行目标的名字,在一个cmake工程中,这个名字必须全局唯一。
    • [source1] [source2 …] 构建可执行目标文件所需要的源文件。也可以通过target_sources()继续为可执行目标文件添加源文件,要求是在调用target_sources之前,可执行目标文件必须已经通过add_executableadd_library定义了。

原文地址:一颗橘子唐的博客----VSCode CC++项目多个源文件调试
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喝Java也加唐~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值