all : @for subdir in $(SUBDIRS);\ do $(MAKE) -C $(DIR)/$$subdir || exit 1;\ done如上,末尾加“\” 第二行前不得为tab键,空格即可希望对大家有帮助。
将Windows
反斜杠
路径转换为斜杠路径: foo\\bar bar➔foo foo/bar
只要它们不是扩展长度的路径并且不包含任何非ASCII字符,。
这是因为Node.js中的path方法在Windows上输出\\路径而创建的。
$ npm install slash
import path from 'path' ;
import slash from 'slash' ;
const string = path . join ( 'foo' , 'bar' ) ;
// Unix => foo/bar
// Windows => foo\\bar
slash ( string ) ;
// Unix => foo/bar
// Windows => foo/bar
斜线(路径)
类型: string
接受Windows
反斜杠
路径,并返回
先标注一个很好的
makefile
教程
这里归纳了如下符号的含义,请对号入座:$@, $^, $<, $?和=, +=, :=, ?=和;\
section1:(自动化变量,更多自动化变量可参照)
$@ 表示目标文件(标的)
$^ 表示所有的依赖文件(标的)
$< 表示第一个依赖文件(标的)
$? 表示比目标还要新的依赖文件列表
例子分析:(如有hello.c hi....
#define CV_ARE_SIZES_EQ(mat1, mat2) \
((mat1)->rows == (mat2)->rows && (mat1)->cols == (mat2)->cols)
2) 用在printf中,有时候printf中语句太长,需要切分,则需用到
反斜杠
;
3) 用“//”只能注释当前行的语句,想要将下一行一起注释掉,则可以在该行最后加上
反斜杠
。
另外,
反斜杠
除了强制换行的作用之外,还有转义符的意思。如:“\n”表示
换行符
,”\t” “\b”等,此时
反斜杠
表示转义,执行
反斜杠
后面的符号表示的意思。
但若要取
反斜杠
的本意,则需要在
反斜杠
文章目录目的基础入门
Makefile
语法基础杂项变量条件选择函数文件引用嵌套执行
make
使用使用进阶总结
我们可以在终端中通过命令来使用GCC编译代码生成可执行文件,对于实际的项目因为涉及的文件通常会比较多一些,情况也会复杂些。如果每次修改代码后都在终端中一行行输入命令来操作就比较麻烦了,这个时候可以把这些命名都写入一个shell脚本文件中,每次执行这个脚本就可以完成相应的工作。
当然实际操作中有比shell脚本更加合适运用到这个场景中的东西,那就是
Make
和
Makefile
。
Make
是一个程序,最常
targets : prerequisites
command
argets:规则的目标,可以是 Object
File
(一般称它为中间文件),也可以是可执行文件,还可以是一个标签;
prerequisites:是我们的依赖文件,要生成 targets 需要的文件或者是目标。可以是多个,也可以是没有;
command:
make
需要执行的命令(任意的 shell 命令)
这将被解释为单个字符串,不包括
反斜杠
换行符
。
如果您的文本包含
反斜杠
换行符
,并希望在绘图期间处理它们,则可以使用Python的字符串处理方法。例如,可以使用split()方法将字符串分成多行,然后使用嵌套的循环来逐行绘制文本。
以下是一个示例代码,可以处理
反斜杠
换行符
:
```python
from PyQt5.QtGui import QPainter
# ...
def paintEvent(self, event):
painter = QPainter(self)
font = painter.font()
font.setPointSize(14)
painter.setFont(font)
text = "This is a multi-line text. "\
"It spans over multiple lines. "\
"This is the third line.\n"\
"This is the fourth line."
rect = self.geometry()
top_margin = 20
bottom_margin = 20
left_margin = 20
right_margin = 20
lines = text.split('\n')
y = top_margin
for line in lines:
x = left_margin
words = line.split()
for i, word in enumerate(words):
if i > 0:
x += painter.fontMetrics().width(' ')
if '\n' in word:
word, sep = word.split('\n')
painter.drawText(x, y, word)
y += painter.fontMetrics().height()
x = left_margin
painter.drawText(x, y, sep)
else:
word_width = painter.fontMetrics().width(word)
if x + word_width > rect.width() - right_margin:
x = left_margin
y += painter.fontMetrics().height()
painter.drawText(x, y, word)
x += word_width
y += painter.fontMetrics().height()
painter.end()
在此示例中,我们首先将文本分成多行,然后使用嵌套的循环逐行绘制文本。在每行中,我们使用split()方法将单词分开,并在必要时处理
反斜杠
换行符
。如果单词中包含
换行符
,则我们使用split()方法将其分成两部分,并在第一部分中绘制文本,然后在下一行中绘制第二部分。否则,我们计算单词的宽度,并在达到行末时换行。
请注意,此示例仅处理
换行符
,而不考虑其他
反斜杠
转义序列。如果您的文本包含其他
反斜杠
转义序列,例如\t或\r,则需要对代码进行修改。