问题标签 [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.
c++ - 使用 SCons 构建外部代码树
我正在尝试使用 SCons 构建一个依赖于库的软件,该库在系统中安装的源中可用。例如在/usr/share/somewhere/src
. *.cpp
在该目录中应该内置到静态库中并与我自己的代码链接。图书馆资源中没有SConscript
。
由于库在系统目录中,我没有权限,也不想将构建工件放在/usr
. /tmp
或.build
在当前工作目录中是可以的。我怀疑这很容易做到,但我已经被所有这些SConscripts
和VariantDirs
.
解决 SCons 问题的预期方法是什么?
python - 使用 SCons 作为 distutils 的构建引擎
我有一个 python 包,其中包含一些构建扩展所需的 C 代码(具有一些非平凡的构建需求)。我使用 SCons 作为我的构建系统,因为它非常好且灵活。
我正在寻找一种方法来编译我的带有 SCons 的 python 扩展,准备好与 distutils 一起分发。我希望用户只需键入 setup.py install 并使用 SCons 而不是默认的 distutils 构建引擎编译扩展。
想到的一个想法是在 distutils 中重新定义 build_ext 命令,但我找不到大量的文档。
有什么建议吗?
scons - 如何使用 Scons 生成特定的 CPPDEFINE,例如 -DOEM="FOO BAR"
我的意图是最终得到一个编译器命令行,包括 -DOEM="FOO BAR"
我的 SConstruct 文件中有以下内容:
然后我将以下内容放入“overrides.py”文件中:
我似乎最终在生成的命令行中使用“-DOEM=FOO BAR”。有人可以指出我正确的方向吗?谢谢。
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 包,替换gcc
为gcc44
默认编译器。有这样的包吗?这甚至可能/很好吗?
附加信息
我必须使用SCons(一种make
替代方法),它不允许我指定要用于gcc
.
我还将接受任何告诉我如何gcc
在我的文件中指定二进制文件的答案SConstruct
。
c++ - 为什么 fltk-config 的输出会截断 gcc 的参数?
我正在尝试构建一个我下载的应用程序,它使用 SCONS“make replacement”和 Fast Light Tool Kit Gui。
检测 fltk 存在的 SConstruct 代码是:
不幸的是,在我的(Gentoo Linux)系统和许多其他(Linux 发行版)上,如果包管理器允许同时安装 FLTK-1 和 FLTK-2,这可能会非常麻烦。
我试图通过像这样添加它们来修改 SConstruct 文件以使用fltk-config --cflags
和fltk-config --ldflags
(或fltk-config --libs
可能比)更好:ldflags
但这会导致 liblo 的测试失败!查看config.log
显示它是如何失败的:
这应该怎么做?
为了完成我的回答,我如何从结果中删除引号os.popen( 'command').read()
?
编辑这里真正的问题是为什么附加fltk-config
导致 gcc 的输出不接收它应该编译的文件名参数?
static - 如何强制使用静态库而不是共享?
在我的 SConscript 我有以下行:
如何让 scons 使用 mylib.a 而不是 mylib.so,同时与其他库动态链接?
编辑:希望尽可能少地使用特定于平台的黑客。
delphi - 如何强制 SConscript 构建器更改目录?
目前我正在尝试将一个百万级的遗留项目从枯燥的 .cmd 脚本移植到 SCons。它的一部分是 VC++,其他的是 Delphi。为 C++ 部分创建 SConscript 轻而易举。
为了构建 delphi 部分,我编写了一个非常简单的构建器,可以检测它是程序还是库项目。在通过 SConscript 链接后调用构建器会使 scons 调用 dcc32 $subdir/project.dpr 这会误导 dcc32 在当前目录而不是 $subdir 中查找单元。
有没有办法告诉 scons 在执行驻留在 sconscript 中的命令之前输入 $subdir 或者我应该在构建器中修复它?
先感谢您
naming-conventions - 如何使用 scons 获取像“libhello.so.0.0.1”这样的共享库名称?
我正在使用 scons 实用程序来生成共享库。当我编写以下规则时:
SharedLibrary('hello', 'hello.c')
我会得到“libhello.so”文件。
有没有办法自动获取像“libhello.so.version”这样的文件?
tar - scons:源目录不会被复制到构建目录中
我的构建过程的一部分是创建一个输入目录的 tar 文件,位于src/bundle/bundle
. 在 src/bundle/SConscript 中:
在我的 SConstruct 中:
尝试构建时:
显然 scons 没有将 src/bundle/bundle 复制到 tmp/bundle/bundle,但我不知道为什么。
脚注:对 mkvgconf 使用绝对路径名是不好的做法,但在我解决这个问题之前只是中间的。
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 没有解决方案,我如何使我的路径名的格式适合构建平台?