TL;DR:
Как мне убедить Nsight, что я использую C ++ 11? Другими словами, где мне установить соответствующие параметры обнаружения? Сборка с -std = c ++ 11 работает даже из Eclipse. Я говорю о проблемах индексатора с определениями.
Более длинная версия:
Функции C ++ 11 помечены как неразрешенные в редакторе Nsight, потому что определение __cplusplus - 199711L, а не что-то> = 201103L.
Когда я создавал проект, в Project Properties > Build > Discovery Options
параметр Automate discovery of Path and Symbols
был отмечен для каждого языка и каждой конфигурации сборки. Внизу окна «Свойства» была заметка, в которой говорилось, что метод обнаружения устарел, поэтому я снял флажок для каждого языка и для каждой конфигурации сборки.
Теперь в Project Properties > General > Preprocessor Include Paths, Macros etc.
есть пути и определения, предоставленные системой (точнее, предоставленные Провайдерами). В списке я вижу проблемный __cplusplus. Я могу переопределить его в записях пользовательских настроек CDT, и действительно, это будет новое значение после перестроения индекса, но затем всякий раз, когда я нажимаю что-то в редакторе, я получаю сообщение об ошибке:
An internal error occurred during: "Notifying selection listeners".
org.eclipse.cdt.internal.core.index.composite.CompositingNotImplementedError
Очевидно, этот путь тупиковый. Другой вариант - определить новый __cplusplus в Project Properties > General > Paths and Symbols
на вкладке «Символы». Я тоже вижу "неправильный" __cplusplus. Переопределение его там дает мне ту же ошибку, что и выше, после перестроения индекса при нажатии в редакторе.
Кроме того, что, черт возьми, такое CDT Managed Build Setting Entries
Провайдер? Я не вижу для этого никаких вариантов. Где это настроено?
Когда я пытаюсь использовать CDT GCC Built-in Compiler Settings
Provider, я вижу поле, в котором я могу вводить аргументы командной строки, но установка -std = c ++ 11 не имеет никакого эффекта, поскольку эта запись не создает определение __cplusplus.
Не по теме:
Из других новостей, C ++ 11 отлично поддерживает CUDA Toolkit 7.0, в командной строке и в make-файлах. Меня очень огорчает, что nVidia остановилась на Eclipse. Что бы я ни делал с этим, у меня были проблемы только с Eclipse. У меня уходит неделя только на настройку IDE для проекта. Я так ненавижу это.
-std=c++11
, но не с NVCC. Например, проект C ++ хорош с функциями C ++ 11, а проект CUDA - нет. Я перестала за ней ухаживать и выдержала несколько красных линий. Я компилирую его с помощью собственного make-файла. Через IDE вызывается толькоmake all
. - person Alfis   schedule 06.06.2015