LINUX.ORG.RU

qtcreator и последний стандарт C++

 ,


0

1

Вот тут нахваливали QtCreator, даже для не-Qt'шной разработки. И я решил попробовать написать пробный helloworld.

Поставил его из рeп Ubuntu 18.04. Создал Empty проект, добавил main.cpp. Добавил в *.pro «CONFIG += с++17». Собираю, и вижу, что флаг -std в компилятор не передается. Хотя с с++11 передается.

Что за фантастика такая?

★★★★★

В 18.04 скорее всего древний QtCreator, когда еще был C++1y. Ставь последний из их инсталлятора.

anonymous
()

Добавил в *.pro «CONFIG += с++17».

И при чём тут QtC? Речь про qmake. Это отдельная сущность. И C++17 давно поддерживается.

RazrFalcon ★★★★★
()
Ответ на: комментарий от rumgot

Да, проставление флага qmake помогло.

seiken ★★★★★
() автор топика

Поставил его из рeп Ubuntu 18.04.

Сам виноват. Поставь что-то новее.

hateyoufeel ★★★★★
()
Ответ на: комментарий от RazrFalcon

CMake уже научился задавать стандарт не костылями?


CMake - это вообще набор костылей и подпорок. Самый правильный вариант указания стандарта крестов в modern CMake сейчас примерно такой:

target_compile_features(target_name PUBLIC cxx_std_17)

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от m0rph

CMake - это вообще набор костылей и подпорок. Самый правильный вариант указания стандарта крестов в modern CMake сейчас примерно такой: target_compile_features(target_name PUBLIC cxx_std_17)

Вот тут согласен. Тем более в этом случае данное требование стандарта распростроняется на зависимые цели (например при подключениии в них заголовочных файлов из данной цели).
! Но в случае, когда у нас есть проект с несколькими подпроектами (в каждом из которых используется одинаковый стандарт), то удобнее использовать CMAKE_CXX_STANDARD т.к. в этом случае это нужно будет сделать только в главном CMakeLists.txt, тогда как в случае target_compile_features() стандарт требуется указывать для каждой цели.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от DELIRIUM

Конечно костыли, т.к. в CMake как я вижу уже полный треш и угар:

  • target_compile_features(target_name PUBLIC cxx_std_17)
  • CMAKE_CXX_STANDARD
  • CMAKE_CXX_STANDARD_REQUIRED

что еще новенького напридумывают? Ппц как юзер-френдли, ага. Нужно пол дня убить в копании документации и гуглежу на стековерфлов.

kuzulis ★★
()
Последнее исправление: kuzulis (всего исправлений: 3)
Ответ на: комментарий от kuzulis

CMAKE_CXX_STANDARD CMAKE_CXX_STANDARD_REQUIRED

Тебе нужно полдня чтобы прочитать несколько строчек описания и больше не путать эти переменные?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.