Gcc cmake始终在导入的接口目标上使用“-isystem”
我正试图编写一个CMakeLists.txt来编译我的Arduino项目,以便更好地了解cmake。 我将Arduino核心库定义为一个导入的接口,并尝试将我自己的目标与它联系起来。问题是,在调用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);
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