MSVC 踩坑记录:`set(CMAKE_CXX_STANDARD)` 需要设置 `/Zc:__cplusplus`
[MSVC 踩坑记录] set(CMAKE_CXX_STANDARD)
需要设置 /Zc:__cplusplus
最近在使用 MSVC 编译项目 CFSApp 的时候,eigen 总是报错说我 C++ 语言标准太低,在 cmakelists 中写了 set(CMAKE_CXX_STANDARD 17)
也不行,后来发现是 MSVC 的问题。
在使用 MSVC 的时候,如果没有带上 /Zc:__cplusplus
选项, 宏 __cplusplus
则会一直是 199711L
(即使你用 /std
选项或在 cmake 中 set(CMAKE_CXX_STANDARD)
设置了语言标准,如c++17, c++20等)。
这使得一些依赖宏 __cplusplus
判断 C++ 语言标准的库可能无法编译通过。
题外话:尽量也加上 /permissive-
选项,来禁止使用 MSVC 独有的扩展,提升通用性。
参考链接
欢迎转载,转载请注明出处!