问题标签 [build-tools]

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 投票
2 回答
473 浏览

build - 在 Jam 中定义跨目录依赖

在使用 make 多年之后,我刚刚开始在我的项目中使用 jam(实际上是 ftjam)。

在我的项目工作区中,我有两个目录:

  • src我在哪里构建可执行文件和库
  • test我的测试程序在哪里

我正在尝试建立对测试程序的依赖关系,以便每次编译它们时,库也会重新编译(如果需要的话)。

关于如何做的任何建议?

0 投票
1 回答
5914 浏览

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

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

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

0 投票
2 回答
555 浏览

build - 如何在 bjam 中使用带有空格的文件名?

我需要在 Jamfile 中描述一个外部库。库的位置保存在环境变量中。

这是来自 Jamfile 的片段:

--剪辑--

- 旋转 -

bjam 抱怨说找不到“C:\Program”。可以做些什么来让 Jamfile 中的 lib 规则调用接受带有嵌入空间的路径?

0 投票
2 回答
1296 浏览

python - 如何在不安装的情况下将 Python 扩展模块打包为可加载的蛋?

我正在修改我们的构建脚本以基于出色的 Waf 工具(我确实使用 SCons 很长时间了,但它太慢了)

无论如何,我遇到了以下情况,我找不到解决办法:

  • 我有一个依赖于许多先前构建的 egg 文件的产品。
  • 我正在尝试使用PyInstaller打包产品作为构建过程的一部分。
  • 我首先构建依赖项。
  • 接下来我要运行 PyInstaller 来打包依赖于我构建的鸡蛋的产品。我需要 PyInstaller 能够在打包过程中加载这些 egg 文件。

这听起来很简单:您计算出PYTHONPATH应该是什么,构建sys.environ正确设置变量的副本,然后使用subprocess.Popen传递先前配置的环境作为 env 参数来调用 PyInstaller 脚本。

问题是,PYTHONPATH如果您添加的鸡蛋是打包为 zipsafe 的扩展模块,那么单独设置似乎是不够的。在这种情况下,事实证明嵌入式库无法导入。

如果我解压缩鸡蛋(将目录重命名为 .egg),我可以在没有进一步设置的情况下导入它们,但在这种情况下这不是我想要的。

我还可以通过执行以下操作从子外壳中导入鸡蛋:

  • 设置PYTHONPATH为包含您要导入的鸡蛋的目录(不是鸡蛋本身的路径)
  • 加载一个 python shell 并使用pkg_resources.require它来定位鸡蛋。

完成此操作后,鸡蛋将正常加载。同样,这不切实际,因为我需要能够以准备好从关闭导入这些鸡蛋的方式运行我的 python shell。

肮脏的选择是在调用真正的目标脚本之前输出一个执行上述操作的包装脚本,但这似乎是错误的做法:必须有更好的方法来做到这一点。

0 投票
6 回答
1278 浏览

java - 用 Build.java 替换 build.xml - 使用 Java 和 Ant 库作为构建系统

我对基于 Groovy 的 Ant 替代方案感到失望。AntBuilder 不能在 Eclipse 中工作,Eclipse 的 Groovy 插件令人失望,而 Gradle 还没有准备好。

Ant 文档有一个标题为“在 Ant 之外使用 Ant 任务”的部分,其中介绍了如何从 Java 代码中使用 Ant 库。这里还有另一个例子:

http://www.mail-archive.com/dev@ant.apache.org/msg16310.html

从理论上讲,用 Build.java 替换 build.xml 似乎很简单。Ant 文档提示了我必须发现的一些未记录的依赖项(从在 Java 中使用 Ant 的角度来看是未记录的)。

鉴于对 Ant 脚本的失望程度,我想知道为什么以前没有这样做过。也许它有也不是一个好的构建系统。

有没有人尝试使用 Ant 库在 Java 中编写构建文件?

0 投票
12 回答
1660 浏览

c++ - C++ 开发人员工具:黑暗区域

虽然 C++ 标准委员会努力定义其复杂但强大的特性并保持其与 C 的向后兼容性,但根据我的个人经验,由于缺乏工具,我发现使用 C++ 编程的许多方面都很麻烦。

例如,我最近尝试重构一些 C++ 代码,将许多 shared_ptr 替换为 T& 以删除大型库中不需要的指针用法。我不得不手动执行几乎整个重构,因为没有任何重构工具可以帮助我安全地完成这项工作。

使用调试器处理 STL 数据结构就像是在陌生人不同意时找出她的电话号码。

根据您的经验,C++ 中缺少哪些必要的开发人员工具?

0 投票
6 回答
5870 浏览

php - PHP 构建系统

我正在使用在 Cruise Control 之上运行的PHPUnderControl进行持续集成和单元测试。我还设置了它来运行 PHPDocumentor 为我生成 phpdoc,它运行 PHP Code Sniffer 来为我强制执行编码标准。但现在我想在同一台服务器(Ubuntu)上设置一些东西,以便更轻松地部署到远程服务器。我已经设置好了,所以在每次成功构建后,SVN 导出都是从主干到服务器上项目文件夹中的一个目录中完成的。

我一直在考虑编写一个小的自定义 PHP 脚本,它将通过 SSH 连接到配置的远程服务器,压缩最新的导出,复制它,解压缩并运行任何迁移。像这样的 PHP 脚本最初不应该太难,除非我最终需要开始扩展到多台服务器。我知道那里有像PhingFabric等系统。

我的问题是,是否有人对这些有任何经验并且可以提供一些优点和缺点?我已经开始在我的服务器上设置 Phing,接下来将尝试使用 Fabric 来使用它们,但想知道是否有人更广泛地使用它们,或者必须扩展它们,可以提供一些反馈。

0 投票
5 回答
3659 浏览

database - ETL 工具和构建工具

我熟悉软件自动化构建工具(例如 Automated Build Studio)。现在我正在研究 ETL 工具。

我想到的一件事是,通过使用软件构建工具,我可以在 ETL 工具中做任何我能做的事情。ETL 工具专为数据加载和操作而定制,需要大量脚本才能完成这项工作。另一方面,软件构建工具用途广泛,足以胜任任何工作,包括编写脚本以从任何格式提取、转换和加载任何数据到任何格式。

我对吗?

0 投票
4 回答
22888 浏览

java - How can include multiple jars in the classpath using ant?

I have a bunch of .java files in a "src" folder that depend on three jars in a "lib" folder. I have the following build.xml file:

This compiles fine, but when I try and run I get

"java.lang.NoClassDefFoundError: javax/jms/Destination"

This program runs and compiles fine when I include the jars in the buildpath using Eclipse, though.

EDIT: So I copied the jars into the folder that has the compiled classes. The class with the main method is NDriver.class. When I try:

java -classpath ./geronimo-jms_1.1_spec-1.1.1.jar:./activemq-core-5.3.0.jar:./activemq-all-5.1-SNAPSHOT.jar NDriver

This gives:

Exception in thread "main" java.lang.NoClassDefFoundError: NDriver

I'd appreciate any help.

0 投票
8 回答
1664 浏览

makefile - Make受欢迎的原因与替代品

是什么力量在使笨拙的旧 Make(带有或不带有 makefile 生成器工具)作为构建工具突出?是替代品的缺陷使它们无法被广泛采用,还是宣传不足,或者 Make 有什么东西让它保持原样?

尽管 Make 在处理大型项目时存在许多弱点和困难(例如,请参阅http://freshmeat.net/articles/what-is-wrong-with-make),但它似乎仍然比更新的、改进的替代品(如Scons )更广泛地使用,果酱耙子库克等。

替代方案是否有可衡量的收益,或者“市场份额”主要取决于团队领导的意见和经验?