问题标签 [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 投票
1 回答
801 浏览

c++ - 使用 SCons 构建外部代码树

我正在尝试使用 SCons 构建一个依赖于库的软件,该库在系统中安装的源中可用。例如在/usr/share/somewhere/src. *.cpp在该目录中应该内置到静态库中并与我自己的代码链接。图书馆资源中没有SConscript

由于库在系统目录中,我没有权限,也不想将构建工件放在/usr. /tmp.build在当前工作目录中是可以的。我怀疑这很容易做到,但我已经被所有这些SConscriptsVariantDirs.

解决 SCons 问题的预期方法是什么?

0 投票
4 回答
2497 浏览

python - 使用 SCons 作为 distutils 的构建引擎

我有一个 python 包,其中包含一些构建扩展所需的 C 代码(具有一些非平凡的构建需求)。我使用 SCons 作为我的构建系统,因为它非常好且灵活。

我正在寻找一种方法来编译我的带有 SCons 的 python 扩展,准备好与 distutils 一起分发。我希望用户只需键入 setup.py install 并使用 SCons 而不是默认的 distutils 构建引擎编译扩展。

想到的一个想法是在 distutils 中重新定义 build_ext 命令,但我找不到大量的文档。

有什么建议吗?

0 投票
1 回答
965 浏览

scons - 如何使用 Scons 生成特定的 CPPDEFINE,例如 -DOEM="FOO BAR"

我的意图是最终得到一个编译器命令行,包括 -DOEM="FOO BAR"

我的 SConstruct 文件中有以下内容:

然后我将以下内容放入“overrides.py”文件中:

我似乎最终在生成的命令行中使用“-DOEM=FOO BAR”。有人可以指出我正确的方向吗?谢谢。

0 投票
2 回答
21102 浏览

c - 使用 SCons 更改 Linux 中的默认 C 编译器

在我的 Linux 平台上,我有多个版本的gcc.

usr/bin我有:

  • gcc34
  • gcc44
  • gcc

以下是一些输出:

我需要使用 4.4 版本,gcc但默认似乎是 4.1 版本。

我有办法替换/usr/bin/gcc和使gcc44默认编译器不使用符号链接/usr/bin/gcc44吗?

我不能使用符号链接的原因是因为我的代码必须使用mock. mock从头开始创建一个最小的 linux 安装,并在编译我的代码之前安装指定的依赖项。我无法自定义此“最小安装”。

理想情况下,完美的解决方案是安装一个官方 RPM 包,替换gccgcc44默认编译器。有这样的包吗?这甚至可能/很好吗?

附加信息

我必须使用SCons(一种make替代方法),它不允许我指定要用于gcc.

我还将接受任何告诉我如何gcc在我的文件中指定二进制文件的答案SConstruct

0 投票
2 回答
403 浏览

c++ - 为什么 fltk-config 的输出会截断 gcc 的参数?

我正在尝试构建一个我下载的应用程序,它使用 SCONS“make replacement”和 Fast Light Tool Kit Gui。

检测 fltk 存在的 SConstruct 代码是:

不幸的是,在我的(Gentoo Linux)系统和许多其他(Linux 发行版)上,如果包管理器允许同时安装 FLTK-1 和 FLTK-2,这可能会非常麻烦。

我试图通过像这样添加它们来修改 SConstruct 文件以使用fltk-config --cflagsfltk-config --ldflags(或fltk-config --libs可能比)更好:ldflags

但这会导致 liblo 的测试失败!查看config.log显示它是如何失败的:

这应该怎么做?

为了完成我的回答,我如何从结果中删除引号os.popen( 'command').read()

编辑这里真正的问题是为什么附加fltk-config导致 gcc 的输出不接收它应该编译的文件名参数?

0 投票
2 回答
9737 浏览

static - 如何强制使用静态库而不是共享?

在我的 SConscript 我有以下行:

如何让 scons 使用 mylib.a 而不是 mylib.so,同时与其他库动态链接?

编辑:希望尽可能少地使用特定于平台的黑客。

0 投票
1 回答
2638 浏览

delphi - 如何强制 SConscript 构建器更改目录?

目前我正在尝试将一个百万级的遗留项目从枯燥的 .cmd 脚本移植到 SCons。它的一部分是 VC++,其他的是 Delphi。为 C++ 部分创建 SConscript 轻而易举。

为了构建 delphi 部分,我编写了一个非常简单的构建器,可以检测它是程序还是库项目。在通过 SConscript 链接后调用构建器会使 scons 调用 dcc32 $subdir/project.dpr 这会误导 dcc32 在当前目录而不是 $subdir 中查找单元。

有没有办法告诉 scons 在执行驻留在 sconscript 中的命令之前输入 $subdir 或者我应该在构建器中修复它?

先感谢您

0 投票
3 回答
1844 浏览

naming-conventions - 如何使用 scons 获取像“libhello.so.0.0.1”这样的共享库名称?

我正在使用 scons 实用程序来生成共享库。当我编写以下规则时:

SharedLibrary('hello', 'hello.c')

我会得到“libhello.so”文件。

有没有办法自动获取像“libhello.so.version”这样的文件?

0 投票
1 回答
786 浏览

tar - scons:源目录不会被复制到构建目录中

我的构建过程的一部分是创建一个输入目录的 tar 文件,位于src/bundle/bundle. 在 src/bundle/SConscript 中:

在我的 SConstruct 中:

尝试构建时:

显然 scons 没有将 src/bundle/bundle 复制到 tmp/bundle/bundle,但我不知道为什么。

脚注:对 mkvgconf 使用绝对路径名是不好的做法,但在我解决这个问题之前只是中间的。

0 投票
1 回答
1099 浏览

windows - scons + windows:无法在 Command() 构建器中执行 shell 脚本

我有一个这样的命令生成器:

jsontar = 命令(“bundle.tar”,bundleDir,“mkvgconf $SOURCE $TARGET”)

mkvgconf 是一个 shell 脚本 $SOURCE 是一个目录的路径 $TARGET 是一个文件的路径

当尝试在 windows 下执行时,SCons 不会将 vgmkconf 识别为可执行文件。

谷歌出现: http ://www.scons.org/wiki/UsingPkgConfigMsysShellScripts

使用这个脚本,我可以制作一个 SCons 可以识别并尝试执行的 mkvgconf.cmd。不幸的是,SCons 将 $SOURCE 和 $TARGET 作为 UNIX 路径字符串而不是 Windows 字符串传递。路径字符串被误解并且构建失败。

问题 1:我如何让 SCons 识别我的 shell 脚本而不需要杂乱无章的东西?

问题 2:如果问题 1 没有解决方案,我如何使我的路径名的格式适合构建平台?