我已经在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自动构建它在子目录中找到的所有内容。

是否有人对如何解决此问题有任何想法?

最佳答案

请再次检查MAN page-u选项将仅在当前目录或当前目录以下构建默认目标。当您位于sconsTest/build时,这将排除文件夹sconsTest/test

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

关于python - scons -u和variantdirs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38311306/

10-12 23:51