Visual Studio等效于这些G ++标志?

时间:2016-02-14 22:39:07

标签: c++ visual-studio cmake g++

我正在编译一个使用CMake的项目,假设编译器是G ++,但我实际上是在使用Visual Studio 2013.在CMakeLists.txt文件中,我遇到了行

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic")

我认为我应该用

之类的东西取而代之
if(MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ????")   # what goes here??
else()
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic")
endif()

我是Visual Studio世界的新手,所以虽然我知道G ++标志的含义,但我不知道他们的Visual Studio等价物。我想:

  • -std=c++11告诉G ++使用C ++ 2011,我认为它是Visual Studio 2013中的默认设置,所以我认为我不需要一个标记。
  • -Wall似乎可能大致对应/W4-Wextra大致对应/Wall?但是在VS上,/Wall包含/W4,所以/Wall就足够了吗?
  • -pedantic检查是否严格遵守C ++标准。不知道VS的等价物是什么。

任何人都可以确认使用的正确标志是Visual Studio吗?

1 个答案:

答案 0 :(得分:0)

我正在使用Visual Studio 2015,但我不希望这些标志有任何重大差异:

  • C ++ 11是标准配置,但您应该检查Support for C++11/14/17 - 页面以确定并可能升级到VS2015编译器。
  • Visual Studio有一个“警告级别”,您可以在其中选择/ W0- / W4和/ Wall。所以使用Visual Studio本身你不能指定/ W4和/ Wall,这使我得出/ Wall足够的结论。
  • 我能找到最接近“迂腐”的东西,我会翻译(sry,德语VS在这里)“停用语言扩展”并且是选项/ Za