Makefile cmake字符串以插入符号(^)开头,以美元符号($)结尾?
我看到一个奇怪的cmake行,其中包含一个以“^”开头,以“$”结尾的字符串。但是,它不是正则表达式,而是if语句。是这样的:Makefile cmake字符串以插入符号(^)开头,以美元符号($)结尾?,makefile,cmake,Makefile,Cmake,我看到一个奇怪的cmake行,其中包含一个以“^”开头,以“$”结尾的字符串。但是,它不是正则表达式,而是if语句。是这样的: if ("^${CMAKE_SOURCE_DIR}$" STREQUAL "^${PROJECT_SOURCE_DIR}$") 你能告诉我这是什么意思吗?是否需要添加插入符号和美元符号来比较这两个字符串 首先谢谢。在比较引用值时,我看不出这样的字符串“包装”有什么原因 某些语言(例如bash)在比较可能为空的值时会遇到一些问题,因此在比较的两侧添加一个符号是有意义
if ("^${CMAKE_SOURCE_DIR}$" STREQUAL "^${PROJECT_SOURCE_DIR}$")
你能告诉我这是什么意思吗?是否需要添加插入符号和美元符号来比较这两个字符串
首先谢谢。在比较引用值时,我看不出这样的字符串“包装”有什么原因 某些语言(例如bash)在比较可能为空的值时会遇到一些问题,因此在比较的两侧添加一个符号是有意义的。但同样,若引用这个论点,CMake并没有这样的问题 这是有效的:
if("${CMAKE_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
此外,考虑到给定变量的性质:
- 在
调用这两个变量后project()
- 变量是非空的
- 变量包含路径,路径不太可能有
代码>符号
if(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
最后,在CMake中比较字符串最自然的方法是:
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
在这种情况下,CMake会自动尝试取消引用带有不带引号的名称的变量。在比较带引号的值时,我看不出这种字符串“换行”的原因 某些语言(例如bash)在比较可能为空的值时会遇到一些问题,因此在比较的两侧添加一个符号是有意义的。但同样,若引用这个论点,CMake并没有这样的问题 这是有效的:
if("${CMAKE_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
此外,考虑到给定变量的性质:
- 在
调用这两个变量后project()
- 变量是非空的
- 变量包含路径,路径不太可能有
代码>符号
if(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
最后,在CMake中比较字符串最自然的方法是:
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
在这种情况下,CMake会自动尝试取消引用带有未引号名称的变量