为什么'@';在add_definitions()中,是否使CMake速度异常缓慢?
当我在CMake脚本中添加一个带有@的预处理器定义时,Configure需要10倍的时间为什么'@';在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()的
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()仍然像以前一样扩展@…@语法,因为我使用了此功能。