繁体   English   中英

理解qmake项目文件中的术语\\\\\\“$$ PWD / \\\\\\”

[英]Understanding the Term \\\“$$PWD/\\\” in qmake project file

我在qmake项目文件中找到了这一行:

 DEFINES += SRCDIR=\\\\\\"$$PWD/\\\\\\" 

我知道PWD -part代表打印工作目录 ,我让我给出SRCDIR的价值:

 std::cout << "SRCDIR :" << SRCDIR << std::end; 

我还将变量更改为SRCDIR=$$PWD但它不起作用。

但是,为什么我们需要一个斜线/ ,backslahses \\和引号" ,以获得PWD

qmake将特别处理引号字符和反斜杠。

您的最终目标是将字符串文字定义为SRCDIR的扩展。 C ++中的字符串文字包含在双引号中,因此您需要将这些引号作为定义的一部分传递给编译器。

换句话说,你想要相当于:

#define SRCDIR "somedir/"

其中somedir是当前工作目录,在本例中。 为了达到这个目的,你想要使用\\"来转义引号(因此它不是由qmake专门处理的)。它位于字符串的两端。

现在,逃脱反斜杠怎么样, \\\\ 好吧,这进一步逃脱了shell处理的引用。 当命令

cc -DSRCDIR="somedir/"

传递给shell,引号将被剥离作为​​shell处理的一部分。 要确保这些引号保留,并定义字符串文字,您需要在此级别使用反斜杠转义它们。 shell将转换为\\" into " 因此,在这种情况下双引号字符的完整转义序列是:

\\\"

此标记出现在已定义字符串的两端。 正斜杠只是使代码中的路径更容易使用; 它消除了添加/使用路径的任何地方的需要。

shell看到的命令看起来像

cc -DSRCDIR=\"somedir/\"

并且编译器内部的SRCDIR定义将是一个字符串文字,相当于in-source中的以下定义:

#define SRCDIR "somedir/"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM