cmake+Eclipse/Nsight: ошибка синтаксического анализа компилятора (nvcc)?
Я использую CMake для создания файлов проекта для Nsight (= расширенная версия Eclipse CDT) для проекта CUDA. Проблема в том, что Eclipse анализирует ошибки компилятора, сгенерированные nvcc.
Я включил "nvcc error parser" в "project->properties->C/C++ Make Project->Error Parsers" и переместил его в верхнюю часть списка, но безрезультатно. Синтаксический анализ ошибок работает хорошо для "нативных" проектов nSight CUDA и для проектов, созданных не CUDA/ не nvcc C++ cmake.
CMakeLists.txt очень прост:
cmake_minimum_required (VERSION 2.8)
project(myproject)
find_package(CUDA REQUIRED)
set(CUDA_SOURCES
myprojmain.cu
)
cuda_add_executable( myproject ${CUDA_SOURCES})
1 ответ
Я выяснил причину этого. В файле проекта XML проекта. Поддерево
ProjectDescription / buildSpec / buildCommand / аргументы / словарь / *
содержит пары ключ / значение.
<key>org.eclipse.cdt.core.errorOutputParser</key>
настраивает список анализаторов ошибок:
<value>nvcc.errorParser;org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.WorkingDirLocator;org.eclipse.cdt.core.GLDErrorParser;</value>
Чтобы синтаксический анализ ошибок nvcc работал, nvcc.errorParse должен быть в списке. Порядок имеет значение, так что, вероятно, лучше поставить его перед собой.
Я собрал небольшой скрипт на python для личного использования, который соответствующим образом исправляет проекты Eclipse CDT. Он прикреплен как fix-cmake-nsight-err-0.01.tar.gz к ошибке cmake http://public.kitware.com/Bug/view.php?id=15277 Было бы неплохо увидеть это интегрированным в CMake время...