VSCode 配置 CMake

VSCode 配置 C/C++ 环境的详细过程可参考:VSCode 配置 C/C++ 环境

1 配置C/C++编译环境

  • 方案一

    如果是在Windows,需要安装 MingW,可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。

    注意安装路径不要出现中文。

    打开 windows shell 界面,输入mingw-get install gccmingw-get install g++

    如果安装的时候提示安装包被错误下载,可使用方案二安装。

  • 方案二

    进入网址https://sourceforge.net/projects/mingw-w64/files/,下滑,下载图中所示压缩包。

    找一个无中文路径解压缩。

    添加环境变量。在Path中加入解压后的文件夹中的bin目录,如C:\ProgramFiles\MinGW\mingw64\bin。

  • 测试

    在 windows shell 界面输入gcc -vg++ -v,正确出现版本号则配置成功。

  • 创建 make.exe

    进入 MingW 安装位置下的 bin 目录,将 mingw32-make 复制一份,并改名为 make.exe。如果不这样做,无法使用 make 命令,而需要使用 mingw32-make 命令作为替代。

2 安装 CMake

可以去官网(https://cmake.org/download/)下载安装包。

向下滑,找到安装包,直接下载安装即可。

3 安装 VSCode 插件

按 Ctrl+Shift+x,或点击图中图标,搜索以下插件并安装:C/C++ 、Code Runner、CMake、CMake tools。

4 创建 CMake 工程

新建一个文件夹并用 VSCode 打开。

按 Ctrl+Shift+p,或点击图中所示图标,打开命令面板。

搜索 cmake,选择 CMake 快速入门。

输入项目名称。

选择项目类型。

选择 Executable。

生成以下文件。

然后就可以编写代码了。

5 CMakeLists.txt

编写 CMakeLists.txt 后,在同级目录下创建 build 文件夹,进入 build 文件夹,使用命令 cmake -G"MinGW Makefiles" ..,可自动生成 Makefile。

以下是 CMakeLists.txt 中一些可以使用的语句示例:

cmake 复制代码
# 指定最小版本
cmake_minimum_required(VERSION 3.0.0)
# 制定项目名称
project(algorithm VERSION 0.1.0 LANGUAGES C CXX)
# 引入CTest
include(CTest)
enable_testing()
# 添加子项目
add_subdirectory(subdirectory)
# 如果有共享的头文件或库,可以在这里包含
include_directories(common_include_folder)
# 如果有共享的库文件,可以在这里链接
link_directories(common_lib_folder)
# 指定生成可执行文件
# add_executable(algorithm main.cpp)
# 链接子项目生成的库文件
# target_link_libraries(MyExecutable subproject1_lib subproject2_lib)
# 设置参数
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
set(CMAKE_CXX_COMPILER "D:\\ProgramFiles\\MingW\\mingw64-8.1.0\\bin\\g++.exe")  # 指定编译器路径
# 添加所有源文件
file(GLOB SOURCES "src/*.cpp")
# 添加头文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
# 生成可执行文件
add_executable(partition_executable ${SOURCES})

示例:

假设项目结构如下:

复制代码
project_root/
    |- CMakeLists.txt
    |- subproject1/
        |- CMakeLists.txt
        |- src/
            |- main.cpp
            |- utils/
                |- utility.cpp
                |- utility.h
        |- include/
            |- subproject1/
                |- header1.h
                |- header2.h
    |- subproject2/
        |- CMakeLists.txt
        |- src/
            |- main.cpp
            |- math/
                |- math.cpp
                |- math.h
        |- include/
            |- subproject2/
                |- header3.h
                |- header4.h

主项目的CMakeLists.txt文件可以如下所示:

CMakeLists 复制代码
cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 添加子项目
add_subdirectory(subproject1)
add_subdirectory(subproject2)

子项目的CMakeLists.txt文件可以如下所示:

CMakeLists 复制代码
cmake
# 子项目名
project(subproject1)

# 添加所有源文件
file(GLOB SOURCES "src/*.cpp" "src/utils/*.cpp")

# 添加头文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

# 生成可执行文件
add_executable(subproject1_executable ${SOURCES})

可以在每个子项目文件夹下执行以下命令来构建和运行单独的子项目:

bash 复制代码
mkdir build
cd build
cmake ..
make
./subproject1_executable
./subproject2_executable

6 运行

经过上一步可生成 Makefile,然后运行 make 命令,就可以生成 exe 可执行文件。

接下来运行可执行文件就可以了。

相关推荐
不想写代码的星星13 小时前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++
樱木Plus2 天前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++
RuoZoe4 天前
重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
c语言
blasit4 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
肆忆_5 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星6 天前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛7 天前
delete又未完全delete
c++
祈安_8 天前
C语言内存函数
c语言·后端
端平入洛8 天前
auto有时不auto
c++
norlan_jame9 天前
C-PHY与D-PHY差异
c语言·开发语言