Scons:如何在不创建库的情况下将主程序的目标文件传递给SConscript?

0 投票
1 回答
666 浏览
提问于 2025-04-18 13:52

我有一个主目录,里面放着一个主要的程序,还有一个测试目录,我想在这里对这个程序进行单元测试。我希望把主目录里的所有对象文件传递给测试目录,这样我就可以把它们链接在一起。

SConstruct 文件:

env = Enviornment
log = 'src/config/log'
main_xsd = 'src/config/schema/main.xsd'
xml = 'src/config/xml_manager'
main = 'src/main'

subpackages = [log, xml, main]

objects = []
for package in subpackages:
    pack_objects = env.SConscript(os.path.join(package,"SConscript"),
        dirs=package, variant_dir = 'build/' + package, duplicate=0,
        exports = 'env')

objects.append(pack_objects)
main_program = env.Program("antik", objects)
test = env.SConscript("test/SConscript",
        dirs='test', variant_dir = 'build/test', duplicate=0,
        exports = 'env')

env.Default(env.Install(os.path.join(prefix, "bin")), main_program)
env.Default(env.Install("/etc", log_config));

测试目录里的 SConscript 文件:

Import('env')

test_env = env.Clone()

test_env.Append(CPPPATH = ['#/unit_test'])

sources = ['unit_test/xml_validate_test.c', 'main.c']

program = test_env.Program(sources)
Return('program')

我该怎么把对象文件传递给 SConscript 呢?

1 个回答

1

请查看SCons的用户指南,网址是 http://scons.org/doc/production/HTML/scons-user.html 。在第14.5节“在SConscript文件之间共享环境(和其他变量)”中,你会找到关于Export()和Import()方法使用的例子。

撰写回答