Gcc cmake始终在导入的接口目标上使用“-isystem”

Gcc cmake始终在导入的接口目标上使用“-isystem”,gcc,cmake,include-path,avr-gcc,compiler-flags,Gcc,Cmake,Include Path,Avr Gcc,Compiler Flags,我正试图编写一个CMakeLists.txt来编译我的Arduino项目,以便更好地了解cmake。 我将Arduino核心库定义为一个导入的接口,并尝试将我自己的目标与它联系起来。问题是,在调用make时,avr gcc通过-issystem而不是-I提供指定的包含路径。这会导致几个错误 CMakeLists.txt(再现问题的最低版本) 这是我的Blink.cpp: #include <Arduino.h> void setup() { pinMode(13,OUTPUT);

我正试图编写一个CMakeLists.txt来编译我的Arduino项目,以便更好地了解cmake。 我将Arduino核心库定义为一个导入的接口,并尝试将我自己的目标与它联系起来。问题是,在调用
make
时,avr gcc通过
-issystem
而不是
-I
提供指定的包含路径。这会导致几个错误

CMakeLists.txt(再现问题的最低版本)

这是我的Blink.cpp:

#include <Arduino.h>
void setup()
{
  pinMode(13,OUTPUT);
}
void loop()
{
  digitalWrite(13,HIGH);
  delay(1000);
  digitalWrite(13,LOW);
  delay(1000);
}
如您所见,针对导入目标的链接包括与
-issystem
的依赖项,即使我没有在任何地方声明
SYSTEM
?我怎么能阻止它?! 是吗,因为它是导入的
接口
目标? 我尝试了
taget\u include\u目录(Arduino::Core PRIVATE${my\u include\u dirs})
,但显然
接口目标不允许这样做

提前感谢你的每一个提示

请注意,我知道这不会编译我的arduino代码。这只是一个mcve来告诉你我的问题

编辑


我使用的是Arduino SDK 1.8.13和cmake 3.18.2,正如您所看到的,针对导入目标的链接包括与-isystem的依赖关系,我想,我看不到这一点。我应该在哪里看到?您是否忘记发布详细的生成输出<代码>我没有在任何地方声明系统
它就在
目标目录中(Arduino::Core SYSTEM
,没有?很抱歉,
系统
是以前尝试和错误方法的遗留。我将更新问题您确定给定的包含目录来自与
Arduino::Core
的链接,而不是来自编译器检测过程吗?顺便说一句,不是带有源代码的接口导入库使用对象库会更简单。通常
project()
调用应该在所有
add\u library
调用之前进行(尽管在某些情况下CMake可以“修复”该顺序)。像
CMAKE_系统_名称
CMAKE_系统_处理器
这样的变量通常应该在工具链文件中设置,而不是在
CMakeLists.txt
中设置。对于
CMAKE_C_编译器
CMAKE_C_编译器
变量也是如此,尽管它们也可以在命令行中设置。不,我没有。正如我写的那样,我试图深化我对cmake的理解与这个“项目”有关。但是如果我注释掉
target\u link\u libraries
,包含的内容就会消失(我假设是这样)。我的“真正”项目由一个Toolchain文件和一个FindArduino.cmake-Module组成(其中定义了
Arduino::Core
-Target。如果有帮助,我可以将其发布到github上。正如我所说,我尝试将所有内容压缩在一起,以向大家展示我的具体问题
#include <Arduino.h>
void setup()
{
  pinMode(13,OUTPUT);
}
void loop()
{
  digitalWrite(13,HIGH);
  delay(1000);
  digitalWrite(13,LOW);
  delay(1000);
}
[  5%] Building CXX object CMakeFiles/Blinky.dir/src/Blink.cpp.obj
/opt/arduino/arduino-1.8.13/hardware/tools/avr/bin/avr-g++  -isystem     /opt/arduino/arduino-1.8.13/hardware/arduino/avr/cores/arduino -isystem /opt/arduino/arduino-1.8.13/hardware/arduino/avr/variants/eightanaloginputs -std=gnu++11 -o CMakeFiles/Blinky.dir/src/Blink.cpp.obj -c /tmp/so/src/Blink.cpp