python - scons -u 和 variantdirs

标签 python c++ build scons

我已经使用 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/test 中时,这会排除您的文件夹 sconsTest/build

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

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

相关文章:

python - 使用 pyad 确定用户帐户状态

python - babelize_shell() 在 NLTK 包中不起作用

android - 如何在 macOS Sierra Android 构建中修复 "sed: illegal option -- r"?

python - Flask 调用另一个函数

python - 如何为 GTK 分隔符创建垂直线性渐变

c++ - 在此代码的哪一行可能找到异常/错误?

c++ - 我可以修改 std::exception_ptr 中异常的值吗?

C++ va_arg 类型转换问题

docker - 在构建系统中创建Docker容器的惯用策略是什么

android - react native : Build failed with an exception