VS cmake编译的C++工程如何禁用 '-Zc:nrvo' 选项
时间: 2023-12-29 17:06:23 浏览: 33
在使用 Visual Studio 和 CMake 构建 C++ 项目时,可以在 CMakeLists.txt 文件中添加以下代码来禁用 '-Zc:nrvo' 选项:
```
if(MSVC)
string(REGEX REPLACE "/Zc:nrvo.*" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
endif()
```
这会在 Windows 平台上使用 Visual Studio 编译器时将 '-Zc:nrvo' 选项从 CMake 生成的编译选项中移除。
如果您使用的是其他编译器,可以将上述代码中的 if 条件语句更改为适当的编译器名称和选项。
相关问题
cmake编译选项--print-memry-usage的使用
CMake的`--print-memory-usage`选项可以输出CMake在运行时占用的内存,用于定位CMake运行速度较慢的问题。使用该选项需要在CMake命令行中添加`--print-memory-usage`参数,例如:
```
cmake --print-memory-usage <path-to-source>
```
其中`<path-to-source>`为CMakeLists.txt所在的路径。
执行该命令后,CMake会在输出中显示内存使用情况,如下所示:
```
Memory used: 0.00 MB
Maximum resident set size (kbytes): 7480
```
其中`Memory used`表示CMake运行期间实际使用的内存大小,`Maximum resident set size`表示CMake运行期间所占用的最大物理内存大小(单位为kbytes)。
通过观察`Maximum resident set size`可以判断CMake运行速度较慢的原因,例如CMake在处理大型项目时,可能会因为内存占用过大而导致运行速度变慢。
cmake为编译时添加-I选项
在 CMake 中,可以通过 `include_directories` 命令来添加编译时的 `-I` 选项。该命令可以用于设置一个或多个目录,这些目录将被添加到编译器的包含路径中。
例如,假设我们要将目录 `/path/to/include` 添加到编译器的包含路径中,可以在 CMakeLists.txt 文件中添加以下命令:
```
include_directories(/path/to/include)
```
这将使 CMake 在生成 Makefile 或其他构建系统文件时,自动添加 `-I/path/to/include` 选项到编译器命令行中。