• C/C++ 工程工具链搭建


    一、配置环境要求#

    1. C/C++ 编译器

      此项有系统区别,如果是 Windows 平台,那么可以下载 VS2022 社区版,它自带 MSVC 编译器。如果嫌它太笨重,也可以直接下载 MSVC 再发行组件。如果是 Linux 平台可以直接通过系统自带的包管理器下载 GCC 编译器,版本原则上没有要求。

    2. CMake

      CMake 是跨平台的构建工具,记得配置好环境变量。

    3. VScode

      开源并且跨平台的编辑器,如果你自己喜欢别的,也可以。

      VScode 的插件列表如下:

      • C/C++
      • CMake
      • CMake Tools
      • Gitlens
      • Test Explorer UI
      • C++ TestMate
    4. vcpkg

      由微软主导的 C/C++ 包管理器,也可以一用别的,看自己。记得配置环境变量。


    二、开始搭建#

    其实搭建工程模板主要是 CMake 的事情,即主要是给出能用的 CMakeLists.txt ,这边为了省事儿,直接给出两个 CMakeLists.txt 。不过在此之前需要给出工程目录结构,如下图。

    工程目录一览

    build 目录是由 CMake 自动产生的,我们不用管,主要讲一下其他几个目录的。include 里面放头文件,src 目录下面放源文件,tests 目录下面放单元测试。可以看到,整个工程只有两个 CMakeLists.txt ,一个存在于顶级目录,一个存在于 tests 目录下。现在我们给出两个 CMakeLists.txt 的配置。

    # 顶层目录的 CMakelists.txt
    cmake_minimum_required(VERSION 3.10)
    # 下面这句配置 vcpkg 与 cmake 的联动,位置必须在 project() 之前,路径可以改成与自己相符的
    set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
    project(exampleProject)
    
    # 设置构建结果的输出路径
    #set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
    set(CMAKE_CXX_STANDARD 11)
    
    # 包含之前所说的 include 目录,里面都是头文件
    include_directories(include)
    # 将 src 目录下的所有源文件加入后面的变量之中
    aux_source_directory(src DIR_LIB_SRCS)
    
    # 构建生成 .lib 文件
    add_library(${PROJECT_NAME} ${DIR_LIB_SRCS})
    
    # 添加子目录 tests
    add_subdirectory(tests)
    
    # tests 子目录下的 CMakelists.txt
    cmake_minimum_required(VERSION 3.10)
    # 下面这句配置 vcpkg 与 cmake 的联动,位置必须在 project() 之前,路径可以改成与自己相符的
    set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
    
    # 子目录下需要构建另一个工程
    project(exampleProject_test)
    
    set(CMAKE_CXX_STANDARD 11)
    
    # 包含父工程当中的头文件,链接器需要使用
    include_directories(include)
    # 以及 tests 目录下的源文件,这些文件用于编写单元测试
    aux_source_directory(./ TEST_SRC_FILE)
    
    # 寻找 googletest 单元测试框架,利用 vcpkg 下载
    find_package(GTest REQUIRED)
    
    # 构建生成单元测试可执行文件
    add_executable(${PROJECT_NAME} ${TEST_SRC_FILE})
    
    # 将父工程中生成的 .lib 文件以及 googletest 的库文件链接到此 exe
    target_link_libraries(${PROJECT_NAME} PRIVATE exampleProject GTest::gtest GTest::gtest_main)
    

    上面讲了 CMakeLists.txt 的配置,下载需要利用 vcpkg 下载 googletest 单元测试框架,不然原本的 CMakeLists.txt 会报错找不到包。

    当 vcpkg 正确安装之后,我们在命令行打入 vcpkg --version 时可以看到以下内容。

    vcpkg正确安装

    现在利用它来下载 googletest ,打入 vcpkg install gtest:x64-windows 后面的平台可以自己改,如果是 Linux 平台,那么就是 vcpkg install gtest:x64-linux 。如果下载完成了,命令行会出现以下文字。

    下载成功

    之后我们的 CMake 就不会报错找不到包了。

    如果 vscode 安装了插件 C/C++ TestMate 之后还可以直接从侧边栏中看到单元测试列表,而且可以细粒度执行,比较好用,完整的编写环境截图看起来是下面这个样子。

    完整的环境

    运行调试什么的都是 OK 的,大家可以快乐的写代码了。

  • 相关阅读:
    OA项目之会议通知(查询&是否参会&反馈详情)
    PlacementTools...
    阿里P7爆款《K8s+Jenkins》技术笔记,读了后确实有实质性的帮助
    第十章(6):Transformer模型中的参数共享:减少参数量和计算量的优化策略
    数组的子集能否累加出K
    JAVA高并发——线程池
    机器人控制算法四之迭代法求解四轴机器人逆解
    YOLOv5~目标检测模型精确度
    树莓派玩转openwrt软路由:12.OpenWrt安装MySQL
    Spring Boot工具篇--使用yml多环境配置和创建多环境profile打包
  • 原文地址:https://www.cnblogs.com/endingly/p/16001685.html