gpt4 book ai didi

scons - 使用 scons 生成预处理源?

转载 作者:行者123 更新时间:2023-12-05 01:36:51 27 4
gpt4 key购买 nike

我最近从 make 转换为 SCons。我通常在 make 中做的一件事是有一个从源文件生成预处理源的方法,其中包含将应用于正常构建的所有编译器选项。这对于确定 header 的包含方式很有用。

在 SCons 中做同样事情的最佳方法是什么?我找不到内置的构建器来执行此操作,所以我是否一直在编写自己的构建器?

最佳答案

我会写一个pseudo-builder使用特殊参数调用 env.Object,如下所示:

env = Environment()

# Create pseudo-builder and add to enviroment
def pre_process(env, source):
env = env.Clone()
env.Replace(OBJSUFFIX = '.E')
env.AppendUnique(CCFLAGS = '-E')
return env.Object(source)
env.AddMethod(pre_process, 'PreProcess')

# Regular build
source = ['a.c', 'b.c']
env.AppendUnique(CPPDEFINES = 'DO_COMPUTE_PI') # for example
main = env.Program('main', source)
env.Alias('build', 'main')
env.Default('build')

# Preprocessor build
env.Alias('preprocess', env.PreProcess(source))

示例输出。注意 -DDO_COMPUTE_PI 如何出现在常规编译和 -E 编译中:

$ scons -Q
gcc -o a.o -c -DDO_COMPUTE_PI a.c
gcc -o b.o -c -DDO_COMPUTE_PI b.c
gcc -o main a.o b.o
$ scons -Q preprocess
gcc -o a.E -c -E -DDO_COMPUTE_PI a.c
gcc -o b.E -c -E -DDO_COMPUTE_PI b.c
$

关于scons - 使用 scons 生成预处理源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25195644/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com