带有存储库目录的Scons分层构建

2024-06-01 08:52:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个SCons项目,设置如下:

proj/
    SConstruct
    src/
        c/
        h/
    app1/SConscript
    app2/SConscript
    ...

每个应用程序的所有源/头文件都位于src/c和src/h中


  1. 第一步,我在app1中创建了一个使用Repository函数的SConstruct。在

...

src=Split("main.c first.c second.c")

env = Environment(CC='g++', CCFLAGS=['-O0', '-ggdb'], CPPPATH=['.'])

env.Program('appone', src)

Repository("../src/c", "../src/h")

一切正常。scons从存储库中找到了构建appone应用程序所需的所有源/头文件。在


但如果我试图建立一个层次结构,那就行不通了

我将app1/SConstruct重命名为app1/SConscript并将其放入

SConscript('app1/SConscript')

进入项目/施工

现在我得到以下错误:

^{pr2}$

如何配置proj/SConstruct或proj/app1/SConscript来搜索存储库目录中的所有源文件?在


Tags: 项目函数srcenv应用程序头文件repositoryscons
1条回答
网友
1楼 · 发布于 2024-06-01 08:52:53

SCons正在app1目录中查找您的源文件。如果您这样指定源:

src=Split("#main.c #first.c #second.c")

然后scons将在存储库中搜索源文件。在

一些额外的想法:

  1. 您可能希望main.c位于app1目录中,以避免与其他可执行文件的main.c发生冲突。在本例中,请从源代码列表中的main.c中删除#from main.c。

  2. 如果多个应用程序共享存储库,那么在顶层scostruct中定义存储库可能是个好主意。

  3. 从共享源代码构建库通常很有用,这样单元测试就可以拥有自己的主要功能,但可以链接与应用程序相同的源代码(或者这样应用程序可以共享公共模块)。通过将SConscripts放在共享存储库目录中来构建公共库,这样做可能更容易。超出了这个问题的范围,但是随着项目的发展需要考虑一些事情。

相关问题 更多 >