在windows下使用VS Code、CMake、Make进行代码编译

ops/2024/10/18 5:53:37/

软件环境

Windows11
VS CodeNone
CMake3.26.4-windows-x86_64
MinGWNone

电脑系统配置

  1. 安装MinGW
  2. 将MinGW安装文件夹中bin文件夹下的mingw32-make.exe复制并重命名为make.exe
  3. 在文件夹中添加系统路径,具体位置为 系统->系统信息->高级系统设置->高级->环境变量->系统变量->path 中确保以下路径已经被添加
    如下所示:
    在这里插入图片描述

CMake设置

在CMake中,设置以下变量(根据自己电脑配置进行更改)

set(CMAKE_GENERATOR "MinGW Makefiles")
set(CMAKE_MAKE_PROGRAM "D:/MinGW/bin/make.exe")
set(CMAKE_C_COMPILER "D:/MinGW/bin/gcc.exe")
set(CMAKE_CXX_COMPILER "D:/MinGW/bin/g++.exe")

编写简单代码,代码文件结构如下所示
—代码文件夹
——bin
——build
——include
———hello.hpp
———hello2.hpp
——lib
——src
———run.cpp
———hello.cpp
———hello2.cpp
——CMakeLists.txt
CMakeLists.txt文件内容如下

cmake_minimum_required(VERSION 3.0)
project(HELLO)set(CMAKE_GENERATOR "MinGW Makefiles")
set(CMAKE_MAKE_PROGRAM "D:/MinGW/bin/make.exe")
set(CMAKE_C_COMPILER "D:/MinGW/bin/gcc.exe")
set(CMAKE_CXX_COMPILER "D:/MinGW/bin/g++.exe")include_directories(${PROJECT_SOURCE_DIR}/include
)set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
add_library(hello SHARED 
${PROJECT_SOURCE_DIR}/src/hello.cpp
${PROJECT_SOURCE_DIR}/src/hello2.cpp
)set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)add_executable(test ${PROJECT_SOURCE_DIR}/src/run.cpp)
target_link_libraries(test hello)

src/run.cpp内容如下

#include <iostream>
#include <stdio.h>
#include "hello.hpp"int main(int argc, char** argv)
{printf("hello\n");printf("run:%s\n", argv[0]);hello_inclode();printf("enter any key to exit\n");getchar();exit(0);
}

src/hello.cpp内容如下

#include "hello.hpp"
#include "hello2.hpp"
void hello_inclode(void)
{printf("include hello.cpp\n");hello2_include();
}

src/hello2.cpp内容如下

#include "hello2.hpp"
void hello2_include(void)
{printf("hello2 include\n");
}

include/hello.hpp内容如下

#ifndef __HELLO_H__
#define __HELLO_H__
#include <stdio.h>
void hello_inclode(void);
#endif

include/hello2.hpp内容如下

#ifndef __HELLO_H__
#define __HELLO_H__
#include <stdio.h>
void hello2_include(void);
#endif

在build文件夹中使用cmake指令进行编译,虽然在CMakeLists.txt中指定了生成器,但是在目前版本中生成的并不是该变量指定的参数,因此添加-G参数,具体指令如下:

cmake -G="MinGW Makefiles" ..
make

执行bin文件结果如下所示:
在这里插入图片描述


http://www.ppmy.cn/ops/38596.html

相关文章

【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用

背景 在开发 Web 应用的过程中&#xff0c;作为开发人员&#xff0c;为了确认接口的性能能够达到要求&#xff0c;我们往往需要一个接口压测工具&#xff0c;帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中&#xff0c;我们通常会用 Postman 等图形化…

Redis面试题总结5.3

1.什么是redis&#xff1f; redis是一款开源的NoSQL数据库&#xff0c;开源将数据以键值对的方式进行存储&#xff0c;与其他数据库不同的是&#xff0c;redis是通过内存进行数据存储的&#xff0c;也因此redis的读写性能非常高&#xff0c;被广泛应用于分布式缓存方向。 2.什…

(第13、14天)【leetcode题解】#右旋字符串 28、找出字符串中第一个匹配项的下标

目录 右旋字符串题目描述思路代码思考 28、找出字符串中第一个匹配项的下标题目描述暴力匹配思路代码 KMP算法思路代码难点回顾 右旋字符串 题目描述 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一…

一款开源高性能AI应用框架

前言 LobeChat 是一个基于 Next.js 框架构建的 AI 会话应用&#xff0c;旨在提供一个 AI 生产力平台&#xff0c;使用户能够与 AI 进行自然语言交互。 LobeChat应用架构 LobeChat 的整体架构由前端、EdgeRuntime API、Agents 市场、插件市场和独立插件组成。这些组件相互协作&a…

封装一个可以最小化和展开的弹窗组件

gl-dialog 大概思路&#xff1a; 在弹窗组件内部引入gl-dialog-collapse&#xff0c;这个组件主要用于存储已经被最小化的弹窗&#xff08;基础数据&#xff09; 弹窗内部的数据如何在父组件拿到是通过作用域插槽来实现的 gl-dialog接收一个tempData这个数据会在内部被记录下来…

水平滑动与垂直滑动菜单

水平滑动菜单 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}ul{background-color: #000;}ul li{text-shadow: none;display: inline-block;height: 40px;}ul li a{…

Linux流量分析工具 | nethogs

在应急过程中&#xff0c;经常会遇到应用访问缓慢&#xff0c;网络阻塞的情况&#xff0c;分析原因可能会想到存在恶意程序把带宽占满的可能。通过这样一个小工具可以快速定位异常占用带宽程序的路径、PID、占用流量大小或是排除由带宽占满导致服务器缓慢的猜想。 一、简介 Ne…