cmake大小写敏感吗?
时间: 2023-07-08 14:25:19 浏览: 143
在Linux和Unix系统中,CMake是大小写敏感的。这意味着在CMakeLists.txt文件中,变量名、函数名、指令名和命令参数都必须使用正确的大小写。如果你在代码中使用了不同的大小写,CMake将无法识别这些变量或函数,并且会抛出错误。
在Windows系统中,CMake默认是不区分大小写的。这意味着在CMakeLists.txt文件中,变量名、函数名、指令名和命令参数可以使用任意大小写,CMake都可以识别。但是,这个行为可以通过设置CMake的`CMAKE_CASE_INSENSITIVE_FILESYSTEM`选项来改变。如果将该选项设置为`OFF`,则CMake将变得大小写敏感。
为了保证代码的可移植性,建议在编写CMake代码时,始终使用正确的大小写,并且不要依赖于不同操作系统的默认行为。
相关问题
cmake 变量区分大小写吗
CMake 变量的名称是区分大小写的。在 CMake 中,变量的名称一般使用大写字母,例如:`PROJECT_NAME`、`CMAKE_CXX_STANDARD`。
在 CMake 中,变量可以使用 `set()` 命令来进行设置。例如:
```
set(PROJECT_NAME my_project)
set(CMAKE_CXX_STANDARD 11)
```
上述代码中,`PROJECT_NAME` 和 `CMAKE_CXX_STANDARD` 都是变量名,`my_project` 和 `11` 是变量的值。
注意:在 CMake 中,变量名和变量值之间是不能有空格的,否则会被认为是两个不同的变量。
可以在CMake中执行strip命令吗?
可以在CMake中使用strip命令。在CMake中可以使用`add_custom_command`或`add_custom_target`命令来添加strip命令。下面是一个使用`add_custom_command`命令来添加strip命令的示例:
```cmake
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Stripping ${PROJECT_NAME}"
)
```
上述命令将在构建目标后执行`${CMAKE_STRIP}`命令来strip目标文件,其中`$<TARGET_FILE:${PROJECT_NAME}>`会被替换为当前项目的可执行文件路径。`${CMAKE_STRIP}`是一个CMake内置的变量,它指向系统中的strip命令。
如果要在CMake中添加多个strip命令,可以使用`add_custom_target`命令,例如:
```cmake
add_custom_target(strip
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:${PROJECT_NAME}>
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:mylib>
COMMENT "Stripping targets"
)
```
上述命令将创建一个名为`strip`的自定义构建目标,并在该目标中依次执行strip命令,从而strip掉`${PROJECT_NAME}`和`mylib`两个目标文件。
需要注意的是,在执行strip命令之前需要确保目标文件已经被完全构建,否则strip命令可能会失败。因此在示例中使用了`POST_BUILD`选项,表示在构建完成后执行strip命令。