当前位置:网站首页>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 NTFS format converter (convert.exe) is missing from the current system
- Xin'an Second Edition: Chapter 25 mobile application security requirements analysis and security protection engineering learning notes
- Chrome prompts the solution of "your company management" (the startup page is bound to the company's official website and cannot be modified)
- 分布式(一致性协议)之领导人选举( DotNext.Net.Cluster 实现Raft 选举 )
- 02 personal developed products and promotion - SMS platform
- TCP connection is more than communicating with TCP protocol
- Application service configurator (regular, database backup, file backup, remote backup)
- How uipath determines that an object is null
- EasyRE WriteUp
- MySQL basic addition, deletion, modification and query of SQL statements
猜你喜欢

【逆向】脱壳后修复IAT并关闭ASLR
![[elastic] elastic lacks xpack and cannot create template unknown setting index lifecycle. name index. lifecycle. rollover_ alias](/img/03/ece7f7b28cd9caea4240635548c77f.jpg)
[elastic] elastic lacks xpack and cannot create template unknown setting index lifecycle. name index. lifecycle. rollover_ alias

EasyRE WriteUp

JVM 垃圾回收器之Serial SerialOld ParNew

Serial serialold parnew of JVM garbage collector

JVM garbage collector part 2

【MySQL入门】第四话 · 和kiko一起探索MySQL中的运算符

List集合数据移除(List.subList.clear)

JUnit unit test

分布式(一致性协议)之领导人选举( DotNext.Net.Cluster 实现Raft 选举 )
随机推荐
Interpretation of Flink source code (II): Interpretation of jobgraph source code
自动化运维利器-Ansible-Playbook
Remote code execution penetration test - B module test
【逆向中级】跃跃欲试
Kali2021 installation and basic configuration
List set data removal (list.sublist.clear)
Openharmony developer documentation open source project
BearPi-HM_ Nano development board "flower protector" case
05 personal R & D products and promotion - data synchronization tool
Deploy flask project based on LNMP
JVM garbage collection overview
PySpark算子处理空间数据全解析(5): 如何在PySpark里面使用空间运算接口
Vscode matches and replaces the brackets
【逆向初级】独树一帜
[CISCN 2021 华南赛区]rsa Writeup
vscode
List集合数据移除(List.subList.clear)
当前系统缺少NTFS格式转换器(convert.exe)
C # nanoframework lighting and key esp32
Models used in data warehouse modeling and layered introduction