当前位置:网站首页>Compile and build, from the bottom to the top
Compile and build, from the bottom to the top
2022-07-06 17:38:00 【Wzzzzzzx】
In ancient times
In the beginning , We only have one on hand gcc
. No matter what you do, you have a shuttle , Call directly gcc
To compile a project . When there are not many project documents, it can really meet the needs . But many people work together , When the project gets bigger , This method is extremely easy to cause confusion , And the workload is too large .
Feudal period
Then we have make
and makefile
. This is a fully automated solution , It can be based on the rules we define , Automatically compile and build . A project will have different functions , modular , Put all kinds of source code files in categories by type and other methods , Resource file , The temporary file . and makefile
The job is to define the Compilation Rules of the whole project . These rules indicate which files need to be compiled first , Which can be post compiled . Besides ,makefile
It can effectively describe the dependencies between project files and process commands , When only individual files are modified, only necessary processing needs to be performed , You don't have to recompile the whole project , Greatly improved development efficiency .
however make
There are two problems . One is when the project is big ,makefile
It will be very difficult to write and understand , Maintainability is not strong . The second is the problem of cross platform , Every time I change the platform , All need to be revised makefile
.
the Republic of China era
Then there is CMake
The era of the , Although it is in the period of the Republic of China in this article , but CMake
It should be right now C/C++
The factual standard of how the project is built .CMake
Is a cross platform compilation tool , My understanding is that it defines a compilation abstraction layer , Be able to generate all kinds of makefile/project
For different platforms make
Use . All we need to do is write it manually CMakeLists.txt
file .
modern society
about Conan
The cognitive , I think this is a higher level , Support different platforms / compiler / Building tools / Solution of construction mode . Although it is a package manager , But we can use its scripted operation to build packaging , Download upload package , Solve the problem of dependence .Conan
It needs to be used with various construction tools , However, these build scripts do not need to consider various specific configurations when implementing, such as Debug
still Release
,64 A still 32 position , Static library or dynamic link library , Even the package installation can be ignored ,Conan
Can be completed with the help of scripts , Specific usage can refer to This blog . secondly ,Conan
It also solves the problem of dependency , When building, it can automatically pull the corresponding dependency Library .
边栏推荐
- Take you hand-in-hand to do intensive learning experiments -- knock the level in detail
- JVM 垃圾回收器之Garbage First
- 信息与网络安全期末复习(基于老师给的重点)
- Kali2021 installation and basic configuration
- C# WinForm中DataGridView单元格显示图片
- Wordcloud colormap color set and custom colors
- Xin'an Second Edition; Chapter 11 learning notes on the principle and application of network physical isolation technology
- Redis quick start
- Chrome prompts the solution of "your company management" (the startup page is bound to the company's official website and cannot be modified)
- Final review of information and network security (full version)
猜你喜欢
List set data removal (list.sublist.clear)
[reverse] repair IAT and close ASLR after shelling
JVM garbage collector part 2
JVM garbage collector part 1
Wu Jun trilogy insight (IV) everyone's wisdom
[ASM] introduction and use of bytecode operation classwriter class
EasyRE WriteUp
Virtual machine startup prompt probing EDD (edd=off to disable) error
自动答题 之 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
Deploy flask project based on LNMP
随机推荐
【逆向】脱壳后修复IAT并关闭ASLR
06个人研发的产品及推广-代码统计工具
JVM class loading subsystem
TCP连接不止用TCP协议沟通
自动答题 之 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
Detailed explanation of data types of MySQL columns
BearPi-HM_ Nano development board "flower protector" case
Example of batch update statement combining update and inner join in SQL Server
2021-03-22 "display login screen during recovery" can't be canceled. The appearance of lock screen interface leads to the solution that the remotely connected virtual machine can't work normally
PySpark算子处理空间数据全解析(5): 如何在PySpark里面使用空间运算接口
沉淀下来的数据库操作类-C#版(SQL Server)
CTF逆向入门题——掷骰子
DataGridView scroll bar positioning in C WinForm
MySQL Advanced (index, view, stored procedures, functions, Change password)
CentOS7上Redis安装
轻量级计划服务工具研发与实践
Chrome prompts the solution of "your company management" (the startup page is bound to the company's official website and cannot be modified)
EasyRE WriteUp
[mmdetection] solves the installation problem
[CISCN 2021 华南赛区]rsa Writeup