【问题标题】:scons -u and variantdirsscons -u 和 variantdirs
【发布时间】:2016-11-13 15:47:48
【问题描述】:

我已经与 SCons 合作了一段时间,我遇到了一个我无法解决的问题,希望有人能帮助我。我创建了一个虚拟项目,它编译了一个基本的 helloWorld(在 main.cpp 中)。我想要做的是使用 scons -u 命令从“test”文件夹编译我的二进制文件。我的所有构建都在一个变体目录中完成,该目录最终将在项目的根目录(构建文件夹)中创建。

这是我的文件夹树:

+sconsTest
       -SConstruct
       + test
                  -SConscript
                  +test2
                             -SConscript
                             -main.cpp
       +build (will eventually be created by scons)

以下是 SConstruct 代码:

env = Environment()
env.SConscript('test/SConscript', {'env' : env})

以下是测试/SConscript 代码:

Import('env')

env = env.Clone()

env.SConscript('test2/SConscript', {'env' : env}, variant_dir="#/build", duplicate=0)

下面是 test2/SConscript 代码:

Import('env')

env = env.Clone()

prog = env.Program('main', 'main.cpp')

将自己放入“sconsTest/test”文件夹后,我输入 scons -u,我希望它能够构建我的程序,但它所说的只是“test”是最新的。当什么都没有编译。我注意到一些事情,当我从 test/SConscript 中删除 variant_dir 和重复的 args 时, scons -u 起作用了。

此外,我注意到我可以使用命令编译程序

scons -u test2

但是,我在大型项目中使用 scons,我不喜欢将相对路径作为参数来编译我的项目。我希望 scons -u 自动构建它在子目录中找到的所有内容。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 您的test/SConscript 提到了test1,但您的问题仅描述了test2。是错字吗?
  • 是的,我很抱歉,这是一个错字。我在帖子中修复了它。仍然遇到同样的问题。

标签: python c++ build scons


【解决方案1】:

请再次查看MAN page-u 选项只会在当前目录或其下方构建默认目标。当您位于 sconsTest/test 时,这不包括您的文件夹 sconsTest/build

您正在寻找的是-U 选项(大写“U”)。它会在当前目录中构建在 SConscript(s) 中定义的所有默认目标,无论生成的目标最终位于哪个目录。

【讨论】:

    猜你喜欢
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多