Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么'@';在add_definitions()中,是否使CMake速度异常缓慢?_Cmake - Fatal编程技术网

为什么'@';在add_definitions()中,是否使CMake速度异常缓慢?

为什么'@';在add_definitions()中,是否使CMake速度异常缓慢?,cmake,Cmake,当我在CMake脚本中添加一个带有@的预处理器定义时,Configure需要10倍的时间 add_definitions(-DEMAIL="foo\@bar.com") 对此有何见解或解决方案 (我在Windows上使用Cuffic GUI为VisualC++ 2013) 直到CFASE 3.1,CMAIK中有一个未记录的特性:在CGUID文件中, @ var > /COD>将扩展名为 var >代码>变量,类似于 ${var }< /Cuth>。这可能与configure\u file()的

当我在CMake脚本中添加一个带有@的预处理器定义时,Configure需要10倍的时间

add_definitions(-DEMAIL="foo\@bar.com")
对此有何见解或解决方案


(我在Windows上使用Cuffic GUI为VisualC++ 2013)

直到CFASE 3.1,CMAIK中有一个未记录的特性:在CGUID文件中,<代码> @ var > /COD>将扩展名为<代码> var >代码>变量,类似于<代码> ${var }< /Cuth>。这可能与

configure\u file()
的工作有关。CMake 3.1删除了此错误功能(
@
-仅为配置文件保留扩展)。有关更多信息,请参阅的相关部分

我相信CMADSC++代码中有一些地方,在一个字符串中的特殊字符的早期检查中,选择了一个快速的直接使用路径或一个缓慢的解析和扩展路径。
@
的存在确实会触发寻找变量扩展等的缓慢路径

如果您有选择,请使用CMake 3.1进行测试,看看这是否是导致减速的原因


如果这不起作用,或者要求Case3.1不是你的选择,你可以通过把“冒犯”的宏放入头文件中,并将其包含在C++代码中来解决。如果宏的扩展需要依赖于CMake变量,则可以使用

configure_file()
创建头文件。

在CMake 3.1之前,CMake中有一个未记录的功能:在CMake文件中,
@var@
将扩展名为
var
的变量,类似于
${var}
所做的。这可能与
configure\u file()
的工作有关。CMake 3.1删除了此错误功能(
@
-仅为配置文件保留扩展)。有关更多信息,请参阅的相关部分

我相信CMADSC++代码中有一些地方,在一个字符串中的特殊字符的早期检查中,选择了一个快速的直接使用路径或一个缓慢的解析和扩展路径。
@
的存在确实会触发寻找变量扩展等的缓慢路径

如果您有选择,请使用CMake 3.1进行测试,看看这是否是导致减速的原因


如果这不起作用,或者要求Case3.1不是你的选择,你可以通过把“冒犯”的宏放入头文件中,并将其包含在C++代码中来解决。如果宏的扩展需要依赖于CMake变量,则可以使用

configure_file()
创建头文件。

谢谢,升级到CMake 3.1.1解决了我的问题。我还可以承认,configure_file()仍然像以前一样扩展@…@语法,因为我使用了此功能。谢谢,升级到CMake 3.1.1解决了我的问题。我还可以承认,configure_file()仍然像以前一样扩展@…@语法,因为我使用了此功能。