问题标签 [scons]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6811 浏览

unit-testing - scons - 如何在/之后/所有目标都已构建后运行

我最近选择了 scons 来为一个中型 C++ 项目实现一个多平台构建框架。构建会生成一堆单元测试,这些单元测试应该在它结束时被调用。一个人是如何做到这一点的?

例如在我的顶级结构中,我有

但是,每个子目录都有其单元测试,因为 dll 和其中构建的可执行文件之间存在依赖关系 - 我想保持测试的运行,直到所有子目录都已构建和安装(我的意思是,使用 env.Install )。

我应该在哪里编写循环来迭代构建的测试并执行它们?我试着把它放在这个循环之后——但由于 scons 不允许你控制执行顺序——它在我想要它之前就被执行了。

请帮助一个scons新手。:)

谢谢,

0 投票
2 回答
1674 浏览

iphone - 从命令行构建 iPhone 应用程序,无需 xcodebuild

可以手动构建 iPhone 应用程序,而不使用xcodebuildXcode 项目吗?

这个想法是使用 SCons 构建应用程序而不创建 Xcode 项目。我知道有codesign一个我可以使用的命令行工具,但在我开始对 Xcode 构建过程进行逆向工程之前,我想知道是否有人有这方面的经验或以前做过。

0 投票
2 回答
797 浏览

scons - 为什么 Scons 关心我的目标是只读的,我怎样才能说服它忽略它?

我正在尝试将一个特别困难的项目布局的调试版本组合在一起。我需要做的一件事是将最近构建的 DLL 复制到现有 DLL 上,这些 DLL 受 Source Safe 的控制,因此是只读的。我希望使用 Scons 来管理这个,但是如果你的目标是只读的,Scons 就会出错。我的部分命令是将其设置为可读,但我的命令永远不会执行,因为 scons 首先出错。有没有办法覆盖这种行为?

这是一个演示。如您所见,如果设置了只读位,我的“关闭只读位”命令将永远不会运行:


更新

好的 - 我已经通过在 Scons 运行时踩到它来解决这个问题。看起来 Scons 在构建目标之前会删除它们(请参阅_rmv_existingFS.py,以及 scons 文档页面中的页面)。如果遇到这个问题,可以将目标标记为“Precious”,但是如果使用“-c”,还是会遇到麻烦。

这里没有真正好的解决方案。那好吧。

0 投票
2 回答
744 浏览

python - 表达 SConscript 自己的依赖关系

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

构建时,SConscript 被复制到构建目录,但“配置”模块不是。Depends()通常,人们会用函数(例如)来表达文件依赖关系Depends(program, object_files)。但是,在这种情况下,SConscript 文件本身就是依赖项的“目标”。

我如何在我的 SConscript 中表达这一点?

0 投票
1 回答
752 浏览

python - 从 SConscript 确定构建目录

我有一个 SConscript,它被复制到构建目录 ( variant_dir = ...) 以进行构建。作为无法表达依赖关系的解决方法,我正在尝试将一些其他文件复制到构建目录中。

如何在 SConscript 中确定当前的构建目录是什么?

例如,在以下布局中,内部 SConscript 文件应设置my_build_directory为“build/something”。

0 投票
2 回答
290 浏览

scons - scons 分层构建:传播构建器

我需要能够调整构建环境,以便可以在较低级别构建静态或共享对象。目前,我想出了以下方法:

顶级 SConstruct:

在较低级别的 SConstructs 中,我按名称调用它们:

但是,我不确定这个解决方案有多合理。是否有更直接/正确的方法来实现相同的功能?

提前致谢。

0 投票
3 回答
1482 浏览

c++ - 通过使用平台特定的项目文件或使用项目生成器来构建自动化?

有一些构建系统能够在 OS X 下生成特定于平台的项目文件,如 Visual Studio、、sln文件或项目。vcprojvcxprojXCode xcodeproj

其中之一是 CMake,但我发现对此的支持非常有限,有缺陷,而且很难保持更新版本(如 VS 2010)。

此外,至少 CMake 缺少对 Visual Studio 属性页的支持,这使得管理和更改项目范围的配置变得更加困难 - 例如为所有项目启用/禁用代码分析。

上述问题的一种解决方法是为每个平台手动创建项目文件——在我的例子中只有两个,但即使有更多,数量也不应该那么大。

将特定于平台的构建命令调用到通用构建自动化脚本中非常容易。例如,我使用waf(Python) 在几个项目中自动执行此操作,而无需使用其自己的构建部分。

我想看看您会选择什么:尝试修复/维护项目生成器或保留单独的项目文件?

0 投票
1 回答
3385 浏览

c - 如何根据编译器类型在 SConstruct 中为 C 编译器设置选项?

我需要为 C 编译器设置其他选项,例如添加标志以打开所有警告,具体取决于编译器的类型。例如对于 MSVC,我应该使用

但对于 mingw (gcc) 我需要使用:

我怎么能以 scons 的方式做到这一点?

0 投票
3 回答
216 浏览

scons - 捆绑基于 scons 的源

我们正在使用 SCons 来满足我们所有的构建需求,并且我们希望分发一个开源库。

现在大多数软件都使用 ./configure、make 和 make install 作为构建机制,我们想知道应该如何捆绑我们的库。

我们有以下解决方案:

  • 就像它一样捆绑,需要 scons 来构建。
  • 添加一个只调用 scons 的虚拟配置和生成文件。
  • 添加 autoconf 和 makefile。

获得一个需要 python 和 scons 来构建的软件是如何看待的?

0 投票
2 回答
2636 浏览

scons - scons:覆盖一个文件的构建选项

简单的问题,但我不知道答案。

假设我有一个scons构建,其中CCFLAGS包含-O1. 我有一个文件needsOptimization.cpp,我想在其中覆盖-O1with -O2。我怎么能在 scons 中做到这一点?


更新:这就是我根据 bialix 的回答最终做的事情:

在我的 SConscript 文件中:

以前这个文件是: