SCons中VariantDir下使用-isystem指定头文件路径的问题求助
解决SCons中-isystem路径被VariantDir干扰的问题
最直接的方法:用srcnode()获取原始源码路径
SCons本身就提供了现成的方法绕开VariantDir的重定向——路径对象的srcnode()方法,它会返回当前路径对应的原始源码树中的节点,完全不受VariantDir影响。
具体代码修改
把你原来的代码改成下面两种写法都可以:
# 写法1:先获取当前源码目录,再拼接include envGlobal.Append(CCFLAGS=['-isystem', Dir('.').srcnode().abspath + '/include']) # 写法2:直接对include目录调用srcnode(),更简洁 envGlobal.Append(CCFLAGS=['-isystem', Dir('./include').srcnode().abspath])
这样生成的-isystem参数就会指向源码目录下的include文件夹,而不是VariantDir对应的build目录,头文件路径就正确了。
额外说明
- 不用自己写
PathWithoutVariantDir这类函数,SCons内置的srcnode()就是干这个的。 - 如果你的
include是绝对路径,直接写绝对路径也行,但用srcnode()的适配性更强,不管VariantDir怎么配置都能精准定位到源码里的头文件目录。
内容的提问来源于stack exchange,提问作者the_summer
相关产品推荐
相关产品推荐

