Включить поддержку C 11 в VS 2013 из cmake

#c #c 11 #visual-studio-2013

#c #c 11 #visual-studio-2013

Вопрос:

У меня есть этот небольшой CMakeLists.txt

 cmake_minimum_required(VERSION 2.6)
project(project)

set(CMAKE_CXX_FLAGS "/Qstd=c  11")

add_executable(demo src/main.cpp)
 

Насколько я знаю, флаг /Qstd=c 11 должен включать поддержку C 11 при использовании msvc , но это не так, даже не /Qstd=c 0x работает.

Что я здесь делаю не так?

Комментарии:

1. Я полагаю, что эти флаги предназначены для компилятора Intel C .

2. @DrewDormann о, я вижу, мой плохой, и как это сделать с помощью msvc ?

3. Я не думаю, что у MSVC есть флаг, я думаю, что он всегда находится в режиме C 11, если вы не предоставите ему файл «.c». msdn.microsoft.com/en-us/library/fwkeyyhe.aspx

4. @user3784961 Добро пожаловать в MSVC 🙂

5. @user3784961: Нет, нет никаких предположений, кроме того, что я сказал. MSVC всегда будет использовать режим C 11, если не указан файл C, и в этом случае он всегда будет использовать режим C90.

Ответ №1:

VS2013 поддерживает c 11 без каких-либо дополнительных флагов. Вам не нужно делать ничего дополнительного (конечно, не забудьте использовать /EHsc для включения обработки исключений).

Ответ №2:

Поскольку я не могу комментировать, ближе всего вы сможете установить уровень, не соответствующий C 11, с помощью MSVC, установив для platform toolkit значение v100 (VS2010), поскольку это вернет его к версии, в которой C 11 не поддерживался (я вообще верю, но не совсем уверен) Но вам также понадобится установленный компилятор VS2010.

Комментарии:

1. какой флаг для этого?

2. Не флаг, он находится в разделе Конфигурация проекта> Общие> Набор инструментов платформы.

3. Кроме того, в VC10 (VS2010) были некоторые элементы C 11. Для C 03 вам нужен VC9 (VS2009).

4. @user3784961: По сути, это просто использование старой версии компилятора, выпущенной до анонса C 11. Это другой двоичный файл.