TL; DR:
Как я могу убедить Nsight, что я использую C++ 11? Другими словами, где установить соответствующие параметры обнаружения? Работа с -std = C++ 11 работает даже изнутри Eclipse. Я говорю о том, что Indexer имеет проблемы с определениями.Затмение/Nsight (7,0) и C++ 11 Поддержка
Longer версия:
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
, я вижу поле, где я могу вводить аргументы командной строки, но поместить -std = C++ 11 не имеет никакого эффекта, поскольку эта запись не создает определение __cplusplus.
Offtopic:
В других новостях, поддержка C++ 11 является большим с CUDA Toolkit 7.0, в командной строке и в Makefiles. Меня сильно огорчает, что nVidia поселилась на Eclipse. Что бы я ни делал с этим, я столкнулся с проблемой Eclipse. Мне нужна неделя, чтобы настроить IDE для проекта. Я так сильно его ненавижу.
Если вам не нравится Eclipse, почему бы вам не использовать другую среду IDE? Вы можете использовать любую IDE, которую хотите. Кроме того, вы попробовали то, что предлагается [здесь] (http://stackoverflow.com/questions/9131763/eclipse-cdt-c11-c0x-support) и [здесь] (http://stackoverflow.com/questions/17131744/затмение-CDT-индексатор-делает-не-знаю-с11-контейнеры)? –
Я ненавижу Eclipse, но я не использую другую среду IDE, потому что Eclipse (Nsight) является частью CUDA Toolkit. Я не думаю, что какая-либо другая среда IDE распознала бы ядра CUDA и соответствующим образом выделила бы синтаксис. Не говоря уже о поддержке отладки с cuda-gdb, как это делает Nsight. Помимо этого, я попробовал эти предложения. Большинство из них относятся к более старой версии, и некоторые из них даже предлагают те же самые вещи, которые я описал выше. И когда я их делаю, я получаю ошибку, которую я написал выше. – Alfis
У меня такая же проблема. Вы решили это? – Flamefire