问题标签 [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 回答
5914 浏览

c++ - 使用 scons,如何链接到预建库?

我最近开始使用 scons 构建几个小型跨平台项目。其中一个项目需要链接到预先构建的静态库......这是如何完成的?

在 make 中,我只需在 windows 上附加“link /LIBPATH:wherever libstxxl.lib”,在 unix 上附加“stxxl.a”。

0 投票
6 回答
62228 浏览

visual-c++ - 致命错误 C1083:无法打开包含文件:“Windows.h”:和 scons

今天是我正式使用 C++ 的第一天 :P

我已经下载了 Visual C++ 2005 Express Edition 和 Microsoft Platform SDK for Windows Server 2003 SP1,因为我想接触开源Enso Project

因此,在安装 scons 后,我进入控制台并尝试使用 scons 进行编译,但出现此错误:

检查这些链接后:

VS ans PSDK

包括 tiffi.h

窗口.h

我设法像这样配置我的安装:

替代文字

甚至运行这个脚本

替代文字

我设法在IDE中编译了下面的文件。

但我仍然在控制台中得到那个异常。有人有scons经验吗?

编辑

实际上(我忘了告诉你这一点)我使用“Visual Studio 2005 命令提示符”链接启动了命令提示符。

我假设这将包括环境变量中的路径。好吧,在打印它们之后,我发现它没有:

他们不存在,所以我创建了这个 .bat 文件:

尽管如此,scons 似乎不接受 vars ... :(

0 投票
4 回答
2910 浏览

python - 从python加载dll

我正在从我在这里找到的一些源代码构建一个 python 应用程序

我已经设法通过搜索网络来编译和修复一些问题,但我被困在这一点上:

运行应用程序时会出现此消息。

替代文字 http://img511.imageshack.us/img511/4481/loadfr0.png

这个 python 应用程序使用 swig 链接到 c/c++ 代码。

我有 VC++2005 速成版,我用它与 scons 和 Python 2.5 一起编译(也尝试过 2.4)

试图加载的 dll 是“msvcr80.dll”,因为在消息是“msvcr80.dll”之前找不到或类似的东西,所以我得到它并将它放在 window32 文件夹中。

对于我在这里读到的内容:http: //msdn.microsoft.com/en-us/library/ms235591 (VS.80).aspx

解决方案是使用清单和 dll 文件运行 MT。我已经这样做了,也不起作用。

谁能指出我正确的方向?

这是清单文件的内容:

我现在要尝试 Python 2.6,我不太确定是否理解这个问题,但是 Python 2.5 和 Python 2.5 .exe 在 .exe 文件中有字符串“MSVCR71.dll”。但这可能无关紧要。

附言。如果一切都像 jar 文件一样简单:(

这是完整性的堆栈跟踪

0 投票
2 回答
3482 浏览

build-process - 在 scons 中检测 CPU 架构(32 位 / 64 位)?

是否有任何“标准”插件可用于检测scons中的 CPU 架构?

顺便说一句,这个问题已经在这里以更一般的形式提出......只是想知道是否有人已经花时间将这些信息合并到 scons 中。

0 投票
2 回答
7117 浏览

c++ - 如何让项目将其构建输出与 Scons 放在同一目录中?

背景

我正在通过设置一个包含两个子项目的基本 C++ 示例项目来尝试 Scons:

  • Prj1 是一个依赖于 Prj2 的 EXE
  • Prj2 是一个导出一些函数的DLL

我遇到的问题是该库将其 .obj、.pdb、.lib、.dll 等文件构建在与其 SConscript 文件相同的目录中,而 EXE 将其文件构建在与其 SConscript 相同的目录中。应用程序成功地构建了 Prj2 依赖项和自身。但是,您无法运行生成的 EXE,因为它找不到所需的库,因为它位于其他目录中。

问题

如何让多个项目具有依赖关系,将其二进制文件和调试信息输出到一个公共目录中,以便它们可以被执行和调试?

潜在的解决方案

这是我到目前为止所想到的:

  • 我尝试使用 VariantDir(以前称为 BuildDir),但这似乎不起作用。也许我在这里搞砸了。
  • 我可能会明确地告诉编译器和链接器(例如通过 Fo/Fd)将文件放在哪里(这是最好的还是唯一的解决方案???)
  • 对生成的二进制文件执行复制命令(这似乎是一种 hack,管理/维护相当痛苦)

更新

我更新了下面的文件结构和文件内容,以完整地反映工作解决方案。感谢悲伤的洞察力。

命令

使用此配置,不幸的是,您必须通过 cd'ing 到构建目录然后运行以下命令来执行构建。我需要获得一个正常工作的别名设置来解决这个问题。

文件结构

SConstruct

scons_helper.py

Prj1 征兵

SConscript Prj2

0 投票
1 回答
1978 浏览

c++ - 如何在 Scons 中为具有相对路径的构建目标创建别名?

背景

我正在通过设置一个包含两个子项目的基本 C++ 示例项目来尝试 Scons:

  • Prj1 是一个依赖于 Prj2 的 EXE
  • Prj2 是一个导出一些函数的DLL

您可以在此处查看我的 SConstruct 和 SConscript 文件的目录结构和内容

问题

我遇到的问题是,为了从命令行构建这些目标,我必须指定它们的构建目录的相对路径和特定于平台的文件扩展名。

例如,要构建 Prj1,我必须这样做:

同样,要构建 Prj2,我必须这样做:

问题

如何在不指定相对路径和平台特定文件扩展名的情况下让 SCons 构建这些项目?

期望:

潜在的解决方案

  • 使用别名 - 我很确定这我想要的,但我显然搞砸了。我尝试了以下但没有成功:

参考

0 投票
3 回答
9582 浏览

python - scons : src 并包含目录

有人可以提供一个允许以下结构的 scons 配置文件吗

在顶层,我想要 o 和最终的 exe。

0 投票
0 回答
500 浏览

python - SCons:如果目标是在另一个存储库中构建的,我如何创建指向另一个存储库目标的链接

当我将 a 添加RepositorySConstruct文件(link)时,如果我的存储库中的任何目标已在另一个存储库中构建(并且依赖项没有更改),那么SCons不会构建目标 - 这真的很酷。不幸的是,我有一些工具依赖于放置在某个位置的目标。SCons当由于其他存储库已经构建了目标而决定不在本地构建时,如何在当前存储库中创建指向该其他存储库目标的链接?

编辑: 它看起来SCons有一个“本地”功能,它将文件从另一个存储库复制到本地存储库(链接)。我真正需要的是软链接,因为这些目标很大,而且有很多冗余。

0 投票
2 回答
1607 浏览

python - SCons 问题 - 不理解变量类

我正在为一个项目处理 SConstruct 构建文件,并且我正在尝试从选项更新为变量,因为选项已被弃用。我不明白如何使用变量。我有 0 次 python 经验,这可能是造成这种情况的原因。

例如,我有这个:

但我收到一个错误:

不知道这应该如何工作

0 投票
2 回答
3453 浏览

python - 如何生成多行构建命令?

在 SCons 中,我的命令生成器创建了非常长的命令行。我希望能够将这些命令拆分为多行,以便在构建日志中阅读。

例如,我有一个 SConscipt,例如:

当它执行时,我得到:

在带有 os.system 和 os.popen 的 python shell 中执行此操作——我得到一个可读的命令字符串,并且子 shell 进程将所有行解释为一个命令。

当我在 SCons 中执行此操作时,它一次执行每一行,这不是我想要的。

我还想避免将我的命令构建到 shell 脚本中,然后执行 shell 脚本,因为这会造成字符串转义的疯狂。

这可能吗?

更新:
cournape,
感谢您提供有关 $CCCOMSTR 的线索。不幸的是,我没有使用 SCons 开箱即用支持的任何语言,所以我正在创建自己的命令生成器。使用生成器,我怎样才能让 SCons 去做:

但打印

?