2009 (2)
2010 (1)
2014 (58)
2015 (74)
2016 (71)
2017 (67)
2018 (37)
2020 (57)
2021 (47)
2022 (69)
2023 (45)
1.Cmake
编辑CMakeLists.txt并运行以生成Makefile。
Cmake教程:https://blog.csdn.net/weixin_43717839/article/details/128032486
https://zhuanlan.zhihu.com/p/534439206
2020年第3本书:《CMake实践》 - 知乎 (zhihu.com)
CMake 与 Make:有什么区别? - 地球博客 (earthly-dev.translate.goog)
1.1 区别
gcc是GNU Compiler Collection,也称为GNU编译器套件,可以理解为编译器,它可以编译很多种语言:C/C++、FORTRAN、JAVA、OBJC、ADA等。假如我有一个源文件(比如.c文件),我就可以用gcc命令来编译它。
clang也一样,Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器。源代码发布于BSD协议下。Clang将支持其普通lambda表达式、返回类型的简化处理以及更好的处理constexpr关键字。clang比gcc编译速度更快一些,而且错误提示更人性化。
我们平常用的VC++、Visual Studio、Clion这种大型IDE,里面使用的编译器就是gcc或clang。但是我们通常在使用的时候也就只需要按一个按钮就可以实现对包含多个原文件的程序的编译,这是如果进行的呢?IDE里面已经帮你做了你需要做的一些了。
cmake可以方便地生成makefile文件给make用,可以跨平台生成对应平台能用的makefile。它根据用户编写的CMakeLists.txt去生成makefile。
下面是一个CMakeLists.txt文件:
cmake_minimum_required (VERSION 2.8)
project (Demo3)
aux_source_directory(. DIR_SRCS)
add_subdirectory(math)
add_executable(Demo main.cc)
target_link_libraries(Demo MathFunctions)
该文件用 add_subdirectory 指明本项目包含一个子目录 math,其下的 CMakeLists.txt 文件和源代码也会被处理 ;并用 target_link_libraries 指明需要连接MathFunctions库 ,后者正是由子目录中的 CMakeLists.txt定义:
aux_source_directory(. DIR_LIB_SRCS) #当前目录下所有源文件保存为DIR_LIB_SRCS
add_library (MathFunctions ${DIR_LIB_SRCS}) #生成链接库
如果你用IDE,CLion常能自动生成。IDEE可能会出现某些错误,这个时候就需要你自己去修改相关文件了。
SCons:Eric S. Raymond、Timothee Besset、Zed A. Shaw 等大神力荐的项目架构工具,与 CMake 的最大区别是使用 Python 作为执行脚本。
1.2 Ninja 忍者
Ninja 是一个注重速度的小型编译系统。 它在两个主要方面与其他系统不同:它的设计目的是让更高级别的编译系统生成其输入文件,并且它的设计目的是尽可能快地运行。其它编译器都是高级语言,而 Ninja 的目标是成为汇编程序。Ninja 构建文件是人类可读的,但手写不是特别方便。这些受限构建文件允许 Ninja 快速评估增量构建。
Ninja 的低级方法使其非常适合嵌入到功能更强大的构建系统中; 查看现有工具的列表。 Ninja 用于构建 Google Chrome、Android 的一部分、LLVM,并且由于 CMake 的 Ninja 后端,可以在许多其他项目中使用。
最近一个 Ninja 版本是 v1.11.1,于 2022 年 8 月 30 日发布。您可以下载 Ninja 二进制文件或在系统的包管理器中找到它。或者,从源代码构建:
$ git clone git://github.com/ninja-build/ninja.git && cd ninja
$ git checkout release
$ cat README.md
2. Docker
入门:https://blog.csdn.net/q610376681/article/details/90483576?
2.1.应用实例
我实际用的运行命令:
sudo docker import docker_openocd_export.tar.gz docker_openocd:v3.31
sudo docker run -it --rm -p 3333:3333 -p 4444:4444 --device=/dev/bus/usb/001/012 docker_openocd:v3.31 bash
2.2.封装python实例
Linux https://www.youtube.com/watch?v=0UG2x2iWerk&t=192s
Windows: https://www.youtube.com/watch?v=0TFWtfFY87U
Dockerize Python Applications with GUI:https://www.youtube.com/watch?v=W82jvmiaDtk
在exmaple1目录下有main.py,引用了request和beautifulsoup4库,需创建Dockerfile:
python -m pip freeze > requirements.txt
pip install -r requirements.txt