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

2024-05-09 22:36

本文主要是介绍在windows下使用VS Code、CMake、Make进行代码编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

软件环境

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文件结果如下所示:
在这里插入图片描述

这篇关于在windows下使用VS Code、CMake、Make进行代码编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974690

相关文章

使用Array实现Java堆栈

本教程给出了使用Array 实现Stack数据结构的示例。堆栈提供将新对象放在堆栈上(方法push())并从堆栈中获取对象(方法pop())。堆栈根据后进先出(LIFO)返回对象。请注意,JDK提供了一个默认的Java堆栈实现作为类java.util.Stack。 适用于所有堆栈实现的两个强制操作是: push():数据项放置在堆栈指针指向的位置。pop():从堆栈指针指向的位置删除并返回数据

Spring Boot - 使用类类型信息获取所有已加载的bean

Spring启动会在内部加载大量bean,以最少的配置运行您的应用程序。在这个例子中,我们将学习如何找出所有那些Spring boot加载的bean及其类类型信息。 使用ApplicationContext获取所有已加载的bean 要自动执行方法,当应用程序完全加载时,我正在使用CommandLineRunner接口。CommandLineRunner用于指示bean 在Spring应用程序中

SpringApplication的run方法主要代码步骤

一、图片流程图 二、主要代码  /*** Run the Spring application, creating and refreshing a new* {@link ApplicationContext}.* @param args the application arguments (usually passed from a Java main method)* @return

使用ThreadPoolExecutor创建线程池有哪些关键参数

1、ThreadPoolExecutor类的全参数构造方法: /*** Creates a new {@code ThreadPoolExecutor} with the given initial* parameters.** @param corePoolSize the number of threads to keep in the pool, even* if they

关于Java的数组的使用

关于一维数组的使用 代码示例一如下: package com;public class test_array {public static void main(String[] args){//1.如何定义 一个 数组//1.1数组的声明String[] names;int[] scores;//1.2数组的初始化://1.2.1静态初始化:初始化数组与数组元素赋值同时进行nam

Android_03_数据库的使用总结

前言: 1>区分SQL和SQLite SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。 SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相

Android_02_关于SharePreferences的使用

前言: 我们使用SharePreferences的主要目的是针对一些简单的数据进行存取,其是通过键值对来存取的, 其实质是通过xml文件进行保存的;对于一些简单数据的存取,我们可以用SharePreferences,替代 其他几种复杂的数据存取的方式,比如文件的读写或者数据库的操作; 本示例演示的内容是:通过SharedPreferences来实现记住密码的功能,无需第二次再输入密码

在android的同一个wifi局域网下,利用socket与多个手机进行数据的收发

前言: 在这里强调局域网,是因为内网之间的设备通信时,无需经过外网,若想内网的设备能够与外网进行通信,可自行百度其解决办法... 虽说利用wifi,实质是怎么利用socket来进行通信的问题 步骤一:编写服务端和客户端的代码 服务端代码(MainActivity.java): package com.example.dai.wifiserver;import android

Source Insight的安装及使用

第一步:source insight的下载及安装 source insight的资源下载见如下链接: http://download.csdn.net/detail/u010661782/9454935 第二步:source insight的使用 1>新建工程 project  ----->  new project  ------>   填写工程名和工程存放

Java的clone()方法使用详解

前言: 我们知道,在java的object类中,有这么一个方法clone(),这个方法有什么用呢?怎样才能正确地使用这个方法呢? 下面一一来进行阐述一下 clone()方法详解: 1>clone()方法的作用 顾名思义,clone()方法的作用就是克隆的意思,引入这个方法,这样就便于我们构建属于自己的一些本地对象副本。 这样我们就不用担心因为副本对象的引用而使原生的对象发生改变。