我正在开发一个使用C ++ 11和CUDA的C ++项目。
我想使用eclipse的语法高亮和解析功能,特别是去符号和实时错误检查。但是,当我使用“纯”eclipse时,CUDA内核启动参数表示法通过<<<>>>>打破解析,整个调用标记为无效。当我使用Eclipse Nsight 7时,它不会解析像constexpr这样的C ++ 11相关内容,因此无法解析我的模板化类型。 (见https://devtalk.nvidia.com/default/topic/830892/nsight-editor-does-not-parse-c-11-shows-syntax-error/)
有没有办法(黑客,插件,......)使常规eclipse处理那些<<<<>>>?
答案 0 :(得分:1)
对于这个特殊问题(支持constexpr
),您现在可以使用CUDA 9附带的nsight (基于CDT 8.4)。
如果您仍想使用更新的CDT版本,则自CUDA 9以来有一个新选项:它附带一个安装程序<cuda-install-path>/bin/nsight_ee_plugins_manage.sh
,允许将nsight插件添加到现有的eclipse安装中。
解决方法可能是将内核启动包装在宏中:
#ifdef PARSED_BY_ECLIPSE
#define CALL_CUDA_KERNEL(cmd) (void)0 /* do nothing */
#else
#define CALL_CUDA_KERNEL(cmd) cmd
#endif
将符号PARSED_BY_ECLIPSE
添加到用于索引的配置中。