使用CMake Project和IAR编译器的Visual Studio 2019中的IntelliSense

问题描述

所以我有一个CMake项目,该项目在Visual Studio 2019中使用``打开文件夹''选项打开。从这里,我可以构建和编译它而不会出现任何错误(CMake使用工具链文件中指定的IAR编译器(iccarm.exe))。到现在为止还挺好。 问题在于,尽管找到了所有必需的头文件,但IntelliSense仍显示出许多错误,这些错误主要与“ undefined __INTxx_T_TYPE__”有关。

据我所知,thouse双下划线表示它是编译器内部数据类型,未在任何头文件中定义,这也将解释为什么IntelliSense报告未定义它(即使编译器知道该类型)。我猜想要解决这个问题,IntelliSense确实支持不同的模式,例如“ windows-msvc-x86”或“ linux-gcc-arm”。但是IAR编译器没有选择。

所以我的问题是:如何使IntelliSense在此项目中运行?有没有一种方法可以为IAR编译器添加自定义IntelliSense模式?我可以仅为定义了缺少类型的IntelliSense添加文件吗?有没有办法告诉IntelliSense不要担心那些类型/忽略这些类型?

解决方法

仅在不太可能的情况下有人遇到相同的问题,这是我的“解决方案”(之类):

  1. 我创建了一个头文件,其中包含IAR使用的所有内部类型,并将其称为“ intellisenseHeader.h”。您可以在这里(https://www.gaio.co.jp/support/user/faq/winams/docs/sample_predef.pdf)中找到内部信息,但就我而言,我必须自己添加一些定义。现在的问题是,它不再编译了,因为IAR编译器现在可以找到2个定义(内部定义和头文件中的一个)。因此,我们需要再次解决此问题:
  2. 我将包含内容放入#ifdef USE_INTELLISENSE_HEADER中。
  3. 我创建了两个Visual Studio配置。在第一个中,CMake将设置预处理器指令,并且将包含intellisenseHeader文件。在另一个我没有设置它。

那么这有什么作用?如果您在配置中(包含标头),则IntelliSense可以工作,但无法编译。而且,如果您位于另一个目录中,则可以进行编译,但是IntelliSense不再起作用。因此,现在每次我要编译或编写一些代码时,我都需要在配置之间切换...不是最好的解决方案,但总比没有好。

编辑:好的,您刚刚意识到您可以使用@Richard Critten注释中提到的__INTELLISENSE__,因此不需要使用多个配置。