网站建设代码结构,产品外观设计用什么软件,网站360做的标记如何取消,没有地址可以注册公司吗?Makefile相关依赖
MinGW
MinGW#xff08;Minimalist GNU for Windows#xff09;是一个用于Windows系统的开源软件开发工具集#xff0c;它允许你在Windows平台上使用GNU工具集来编译、链接和运行原生Windows程序。MinGW提供了GCC#xff08;GNU Compiler CollectionMinimalist GNU for Windows是一个用于Windows系统的开源软件开发工具集它允许你在Windows平台上使用GNU工具集来编译、链接和运行原生Windows程序。MinGW提供了GCCGNU Compiler Collection编译器以及其他常用的GNU工具如链接器、调试器等使得开发者能够在Windows上编写和运行使用C、C等语言编写的程序。
MinGW的主要特点包括
跨平台兼容性MinGW允许开发者在Windows上编写和编译与GNU/Linux平台兼容的程序从而更容易实现跨平台开发。开源和免费MinGW是一个开源项目其源代码可以自由获取和修改。同时它也是一个免费工具集用户可以无需支付任何费用即可使用。集成度高MinGW集成了GCC编译器、链接器、调试器等一系列开发工具使得开发者可以在一个统一的环境中完成程序的开发、编译和调试。易于使用MinGW的安装和配置相对简单开发者可以快速地将其集成到他们的开发环境中。
windows11安装教程
Windows11配置MinGW
Makefile文件
用Make工具编译源文件时需要编写Makefile文件。Makefile 是用于自动化编译和构建项目的文件特别是在 C 和 C 等编译型语言中。它包含了一系列的规则这些规则定义了如何从源代码文件生成可执行文件或库文件以及这些文件之间的依赖关系。
Makefile 通常包含以下几个部分
命名解释变量定义用于存储编译选项、源文件列表等目标定义描述要构建的目标如可执行文件及其依赖关系规则定义如何从源文件生成目标文件以及如何编译这些源文件
规则如下
目标target...依赖dependencies...命令command1命令command2...命名解释target是规则生成的目标可以是可执行文件或库文件等dependencies是target生成所依赖的文件或其他目标command是需要执行的命令需要用TAB键来缩进
编写源文件
main.cpp文件
#include iostream
#include hello.hppint main(){std::cout this is c main function! std::endl;hello();return 0;
}hello.cpp文件 源文件
#include iostream
#include hello.hppint hello(){std::cout i love c std::endl;return 0;
}hello.hpp头文件
int hello();gcc编译c用g编译源文件
查看当前目录下文件ls
D:\work\make ls目录: D:\work\makeMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/3/17 11:59 45054 a.exe
-a---- 2024/3/17 11:34 122 hello.cpp
-a---- 2024/3/17 11:27 12 hello.hpp
-a---- 2024/3/17 11:33 159 main.cpp
编译生成中间件.o对象文件g -c hello.cpp main.cpp
D:\work\make g -c hello.cpp main.cpp
D:\work\make ls目录: D:\work\makeMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/3/17 11:34 122 hello.cpp
-a---- 2024/3/17 11:27 12 hello.hpp
-a---- 2024/3/17 12:00 1720 hello.o
-a---- 2024/3/17 11:33 159 main.cpp
-a---- 2024/3/17 12:00 1827 main.o生成目标可执行文件g main.o hello.o -o main D:\work\make g main.o hello.o -o main
D:\work\make ls目录: D:\work\makeMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/3/17 11:34 122 hello.cpp
-a---- 2024/3/17 11:27 12 hello.hpp
-a---- 2024/3/17 12:00 1720 hello.o
-a---- 2024/3/17 11:33 159 main.cpp
-a---- 2024/3/17 12:01 45054 main.exe
-a---- 2024/3/17 12:00 1827 main.o运行可执行文件./main.exe D:\work\make ./main.exe this is c main function! i love c 编写Makefile文件
事先已经安装好MinGW在C:\MinGW\bin中会有mingw-make.exe文件可以拷贝个副本改名make.exe方便操作。测试make -v输出如下
C:\Users\yancemake -v
GNU Make 3.82.90
Built for i686-pc-mingw32
Copyright (C) 1988-2012 Free Software Foundation, Inc.
License GPLv3: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.编写简单的Makefile文件
Makefile文件内容
# version 1
main: main.o hello.og main.o hello.o -o mainmain.o: main.cpp hello.hppg -c main.cpp -o main.ohello.o: hello.cpp hello.hppg -c hello.cpp -o hello.o# 在windows中 rm 命令报错无法在PS里使用只能用在cmd中所用用del
clean:del *.o main 在Makefile文件目录下利用PS输入命令make D:\work\make ls目录: D:\work\makeMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/3/17 15:45 122 hello.cpp
-a---- 2024/3/17 11:27 12 hello.hpp
-a---- 2024/3/17 11:33 159 main.cpp
-a---- 2024/3/17 16:23 301 MakefileD:\work\make make
g -c main.cpp -o main.o
g -c hello.cpp -o hello.o
g main.o hello.o -o main最终的生成文件增加了两个.o文件一个.exe文件
D:\work\make ls目录: D:\work\makeMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/3/17 15:45 122 hello.cpp
-a---- 2024/3/17 11:27 12 hello.hpp
-a---- 2024/3/17 16:25 1720 hello.o
-a---- 2024/3/17 11:33 159 main.cpp
-a---- 2024/3/17 16:25 45054 main.exe
-a---- 2024/3/17 16:25 1827 main.o
-a---- 2024/3/17 16:23 301 Makefile删除中间文件输入命令make clean可以看到.o文件都被删除了。
D:\work\make make clean
del *.o main
D:\work\make ls目录: D:\work\makeMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/3/17 15:45 122 hello.cpp
-a---- 2024/3/17 11:27 12 hello.hpp
-a---- 2024/3/17 11:33 159 main.cpp
-a---- 2024/3/17 16:25 45054 main.exe
-a---- 2024/3/17 16:23 301 Makefile运行可执行文件./main.exe D:\work\make ./main.exe this is c main function! i love c 可以看到编辑Makefile文件就是重复利用Linux命令和gcc相关的编译命令但可以看到这版本的Makefile鲁棒性和冗余性很差。
升级版编写Makefile文件