问题标签 [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.
command-line - SCons:GCC忽略-c
我正在使用基于 MinGW 的 GCC 交叉编译器来编译一个使用 SCons 作为其构建系统的项目。
Python 是原生 2.6.2 版本,不是专门为 MinGW(或 Cygwin)编译的。
但是,我遇到了构建问题:
如果我将-c 添加到 CFLAGS,我会得到一个名为“main.obj -c”的编译对象(obj 和 -c 之间有一个空格)。
有谁知道发生了什么?我能做些什么来解决这个问题吗?
environment-variables - Scratchbox 中的 Scons:找不到 g++
我一直在使用 sbox 和基于 Make 的代码库,没有任何问题。现在我正在使用基于 scons 的代码库,并且遇到了一些奇怪的问题。
似乎在scratchbox中,scons找不到g++。例如,它尝试执行以下操作:
o 你好你好.c
什么时候应该这样做:
g++ -o 你好你好.c
所以大概它的 g++ 字符串变量是空的。g++ 存在并且在 PATH 中 - “which g++”产生 /scratchbox/compilers/bin/g++。
相同的源代码在 Scratchbox 之外构建得很好,所以它不应该是 scons 或代码库的问题。当它工作时,在 scratchbox 之外没有设置特殊的环境变量。
如果我将 /usr/bin/g++ 符号链接到 /scratchbox/compilers/bin/g++,它会更进一步(产生看起来正确的 g++ 命令),但是在执行它们时会产生:
sb_gcc_wrapper (g++): /scratchbox/compilers/arm-linux-cs2007q3-51sb3/bin/sbox-arm-none-linux-gnueabi-g++: 没有这样的文件或目录
列出的文件存在。
PATH 包含 /scratchbox/compilers/bin,SBOX_REDIRECT_FROM_DIRS 包含 /usr/bin,SBOX_REDIRECT_TO_DIRS 包含 /scratchbox/compilers/bin,所以我认为它应该能够找到它。
任何建议,将不胜感激!谢谢,雷
编辑:也许相关-除非我在 scons 文件中添加完整路径,否则它也找不到 pkg-config
qt - Link error while building with command scons compiler=msvc
I am trying to build a program using the command scons compiler = msvc. During this action a link error appears: LNK1181: cannot open input file 'QtCore4.lib'. I have installed Qt for Windows from http://qt.nokia.com/downloads (the free version) and tried to find the requested lib file, but only found the same dll file.
Any advice on how to proceed would be most appreciated.
build-process - 如何优化 SCons 脚本的启动时间?
我有一个 SCons 脚本,它需要大约 10 秒才能发现不需要重建任何东西,这对于本质上是一个相当小的项目来说感觉非常长。阅读 SConscript 本身只需要一两秒钟,大部分时间花在:
步。
我怎样才能知道此时到底scons
在做什么?对于编写快速 SCons 脚本,还有哪些其他一般性建议?
scons - scons环境设置
有没有办法告诉 scons 使用特定文件来设置默认环境?我正在使用 TI DSP,编译器与 cc 不同;我想要一个“环境文件”来定义编译器的位置以及默认标志是什么,然后能够将其用于多个项目。
有什么建议么?
scons - scons 对替代构建工具的帮助
我正在为 TI DSP 使用编译器,因此默认的 CC 和 LINK 以及 AS 工具没有意义。下面是一个适用于我的 SConstruct 文件,我想知道是否有人有更好的建议。一些问题:
- 我想以某种方式告诉它我的 .obj 文件应该放在与源 .c 文件不同的目录中。(它需要知道在哪里,以便找出链接步骤的 SOURCES 以及编译/链接的依赖项)将其与编译器的“-fr”和“-fs”参数联系起来会很好,但我不介意手动执行此操作。
- 下面的SConstruct文件中有一些库存的C文件,都是以DSP2804x_为前缀的。现在 scons 无法弄清楚这些的依赖关系,因为我猜它期望 .obj 文件位于同一目录中,而我对编译器使用“-fr”和“-fs”意味着那些 .obj 文件最终位于与 SConstruct 文件相同的目录中。有一个更好的方法吗?我猜我可能应该有一个将这些参考文件复制到本地目录的构建步骤:如果我更改它们,我希望这些更改传播到所有使用它们的项目。
叹....
scons - 强制 scons 使用 Sconstruct 文件作为全局依赖项
当 Sconstruct 文件本身发生变化时,有什么方法可以让 scons 强制构建所有目标?
(原因是如果我更改构建设置,我不能依赖以前构建的文件与新的构建设置保持一致)
scons - 获取 scons 根目录
作为自定义构建器的一部分,我需要依次运行两个程序。
其中之一是我坚持使用并且无法处理绝对/相对路径的程序,因此我必须使用chdir=1
Builder 的选项,以便其操作在与目标相同的目录中运行。
第二个是位于tools
项目子目录中的脚本;SConstruct 文件位于项目的根目录中。我需要创建一个操作来运行此脚本,但我遇到了麻烦,因为我既没有项目的绝对路径,也没有从目标所在的tools
目录到脚本所在的子目录的相对路径。如果我能以某种方式获得项目根目录的绝对路径,我就准备好了,我可以连接 `tools/myscript.bar' 并完成它。
这就是我所拥有的,或多或少:
问题是我需要更改相关操作,以便可以找到“myscript.bar”,例如:
这看起来很简单,但我不知道怎么做。
scons - scons:使 glob 与构建目录一起玩得很好
我想在子目录中构建所有 .c 文件。我想我会做这样的事情:
src/foo/SConscript
包含:
src/SConscript
包含:
SConstruct
包含:
但它会打印[]
,因为在 scons 可以决定哪些源文件需要从中复制到之前glob.glob()
在目录中运行。build/foo
src/foo
build/foo
我怎么解决这个问题?
touch - 相当于scons中的“触摸”?
scons 使用 MD5 哈希而不是文件修改时间来确定是否需要构建依赖项。
我希望这是默认行为。但是,除了编辑文件以使其不同之外,还有什么方法可以强制它假设特定文件已过时(相当于“触摸”)?
编辑:用例:
二进制文件 F 用于使用工具 X 创建另一个文件 G。出于某种原因,文件 G 已更改(它已损坏,或者我对其进行了编辑)或工具 X 已更改,我想重新创建文件 G 及其下游的所有内容.
编辑:这仅供偶尔使用。我不希望这种情况总是发生,只有在我要求的时候才会发生。此外,我可能不提前知道特定文件。出于这个原因,我不想修改 SConscript/SConstruct 文件来构建特定文件。我想要的是在命令提示符下执行此操作:
这将迫使 scons 根据 foobar.h 构建所有文件,而只需键入即可scons
使用 MD5 哈希进行常规构建以进行依赖性检查。我不介意提前编辑 SConscript/SConstruct 文件以允许这样做(我猜是自定义决策者),如果有办法这样做不会显着增加构建时间。