当前位置:网站首页>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 .
边栏推荐
- The solution to the left-right sliding conflict caused by nesting Baidu MapView in the fragment of viewpager
- C#WinForm中的dataGridView滚动条定位
- Jetpack compose 1.1 release, based on kotlin's Android UI Toolkit
- 【Elastic】Elastic缺少xpack无法创建模板 unknown setting index.lifecycle.name index.lifecycle.rollover_alias
- Flink parsing (III): memory management
- connection reset by peer
- 【MySQL入门】第四话 · 和kiko一起探索MySQL中的运算符
- Yarn: unable to load file d:\programfiles\nodejs\yarn PS1, because running scripts is prohibited on this system
- [CISCN 2021 华南赛区]rsa Writeup
- Flink parsing (VII): time window
猜你喜欢
07 personal R & D products and promotion - human resources information management system
华为认证云计算HICA
Distributed (consistency protocol) leader election (dotnext.net.cluster implements raft election)
JVM 垃圾回收器之Garbage First
轻量级计划服务工具研发与实践
04个人研发的产品及推广-数据推送工具
Concept and basic knowledge of network layering
[ASM] introduction and use of bytecode operation classwriter class
[reverse primary] Unique
【ASM】字节码操作 ClassWriter 类介绍与使用
随机推荐
PySpark算子处理空间数据全解析(5): 如何在PySpark里面使用空间运算接口
07 personal R & D products and promotion - human resources information management system
Take you hand-in-hand to do intensive learning experiments -- knock the level in detail
【逆向】脱壳后修复IAT并关闭ASLR
[VNCTF 2022]ezmath wp
Solrcloud related commands
Models used in data warehouse modeling and layered introduction
【逆向初级】独树一帜
Detailed explanation of data types of MySQL columns
【ASM】字节码操作 ClassWriter 类介绍与使用
Akamai talking about risk control principles and Solutions
远程代码执行渗透测试——B模块测试
Xin'an Second Edition; Chapter 11 learning notes on the principle and application of network physical isolation technology
PySpark算子处理空间数据全解析(4): 先说说空间运算
06个人研发的产品及推广-代码统计工具
华为认证云计算HICA
Grafana 9 正式发布,更易用,更酷炫了!
集成开发管理平台
连接局域网MySql
The problem of "syntax error" when uipath executes insert statement is solved