当前位置:网站首页>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 .
边栏推荐
- C#WinForm中的dataGridView滚动条定位
- The most complete tcpdump and Wireshark packet capturing practice in the whole network
- Automatic operation and maintenance sharp weapon ansible Foundation
- 【MySQL入门】第一话 · 初入“数据库”大陆
- 【逆向初级】独树一帜
- 远程代码执行渗透测试——B模块测试
- 应用服务配置器(定时,数据库备份,文件备份,异地备份)
- 网络分层概念及基本知识
- Grafana 9 is officially released, which is easier to use and more cool!
- List集合数据移除(List.subList.clear)
猜你喜欢
List集合数据移除(List.subList.clear)
yarn : 无法加载文件 D:\ProgramFiles\nodejs\yarn.ps1,因为在此系统上禁止运行脚本
EasyRE WriteUp
Automatic operation and maintenance sharp weapon ansible Foundation
Wu Jun's trilogy insight (V) refusing fake workers
How does wechat prevent withdrawal come true?
Akamai anti confusion
[elastic] elastic lacks xpack and cannot create template unknown setting index lifecycle. name index. lifecycle. rollover_ alias
The problem of "syntax error" when uipath executes insert statement is solved
JVM 垃圾回收器之Serial SerialOld ParNew
随机推荐
Flink parsing (VII): time window
mysql 基本增删改查SQL语句
TCP连接不止用TCP协议沟通
Xin'an Second Edition: Chapter 23 cloud computing security requirements analysis and security protection engineering learning notes
基于Infragistics.Document.Excel导出表格的类
PySpark算子处理空间数据全解析(5): 如何在PySpark里面使用空间运算接口
connection reset by peer
mysql高级(索引,视图,存储过程,函数,修改密码)
Interpretation of Flink source code (I): Interpretation of streamgraph source code
Error: Publish of Process project to Orchestrator failed. The operation has timed out.
C#版Selenium操作Chrome全屏模式显示(F11)
Chrome prompts the solution of "your company management" (the startup page is bound to the company's official website and cannot be modified)
Remote code execution penetration test - B module test
Concept and basic knowledge of network layering
沉淀下来的数据库操作类-C#版(SQL Server)
connection reset by peer
BearPi-HM_ Nano development environment
Precipitated database operation class - version C (SQL Server)
基于LNMP部署flask项目
JVM 垃圾回收器之Serial SerialOld ParNew