如何在 cmake 中设置编译器特定标志

How to set compiler specific flags in cmake

我有一段代码需要 运行 使用 MSVC 和 g++。因此我使用 Cmake。我想使用属于 C++20 的 designated initializers。因为它们自 C99 以来就存在,所以它们已经存在于 g++ 中,但在 MSVC++ 中,它们仅在标志 /std:latest.

中可用

在 CMake 文件中为 MSVC 启用此选项的最佳方法是什么?

您可以设置变量 CMAKE_CXX_FLAGS_RELEASE(仅适用于发布版本)、CMAKE_CXX_FLAGS_DEBUG(仅适用于调试版本)和 CMAKE_CXX_FLAGS(同时适用于发布和调试)。 如果您还使用其他编译器,您应该只设置 msvc 的选项:

if(MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:latest")
endif()