问题标签 [jam]

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 回答
646 浏览

jam - Jam Object 规则和目录

我怀疑手册实际上是在说我做错了什么,但我真的看不到解决方案;当 .c 文件和要构建的 .o 文件不在同一个目录中时,就会出现问题,并且 .c 文件对必须动态生成的 .h 文件具有自动依赖关系。该问题可能可以通过手动设置 .c 和 .h 文件之间的依赖关系来解决,但我想避免这种情况。

我有以下目录结构:

src/ac 文件是这样的:

bc 文件是这样的:

src/cc 文件是这样的:

Jamfile 是:

以下命令正确创建 bo 和 src/bh:

下面的命令创建了src/ah,但是后来gcc创建ao失败了;原因很明显,ac 中的#include 提到了 src/ah,而实际上应该只是指 ah:

以下命令完全失败,甚至没有创建 ch;原因可能是 Jam 在分析 cc 时会生成对 ch 而不是 src/ch 的依赖,并且在 Jamfile 中没有生成 ch 的规则:

如果我在请求 co 之前明确要求生成 src/ch,则此命令可以正确编译:

在我看来,果酱 src/ch 不应该是必要的。这里有什么问题?查看Jam 手册以获取更多信息,特别是在标题文件扫描部分下。

在我接受答案后添加

我一直在对已接受答案的作者建议的结构进行一些试验,我将在此处发布结果。在此设置中,您可以键入:

并且应用程序将链接到 bin/app 下。不幸的是,我在设置 LOCATE_TARGET 时必须使用 UNIX 路径,我的理解是这并不是一个好的做法。

目录结构:

文件 Jamfile:

文件 src/main.c

0 投票
1 回答
455 浏览

python - 从 Jamfile 调用 python 脚本

我想从 Jamfile 调用 python 脚本来生成必要的源文件。

在 Makefile 中,它看起来有点像这样:

在 Jamfile 中存档此类内容的最优雅方式是什么?

0 投票
2 回答
2969 浏览

c++ - 构建带有 .v2 扩展名的 Boost 日期/时间 Jamfile

我正在尝试构建 Boost date_time 库,以便可以将其链接到我的 Makefile 中。我在“libs/date_time/build”中看到一个孤独的“Jamfile.v2”,如果我输入 jam,我会得到:

我现在不知道该怎么做,在 Boost 文档中找不到有关 date_time 安装的任何信息。

以下是文档中的文字:

谢谢,乔

0 投票
1 回答
60 浏览

scheme - 为方案加载表达式卡住 HDRPATTERN

我正在尝试使用一些方案文件来生成代码,作为构建项目的 jamfile 的一部分。

我让它“工作”,因为我的方案文件被评估为构建的一部分并生成他们的 .cpp 被编译并且每个人都几乎很高兴。

在果酱中,我有:

库 somelib : generate.scm ;

UserRule 导致 generate.scm 被执行并输出 generate.cpp ,该文件被传递给 jam 中的 Object 规则。那一点有效。

在 generate.scm 中,我有(加载“included.scm”),我希望 jam 通过在 generate.scm 上设置 HDRPATTERN 和 HDRRULE 将其视为包含,但我无法理解所需的 egrep 表达式。

任何人都知道如何编写 egrep 表达式来匹配这些类型的语句?

0 投票
0 回答
830 浏览

c++ - Visual Studio Project always out of date, "up to date is missing @ECHO", why is Visual Studio looking for this input?

Background:

My team wants Visual Studio for development on an existing codebase, for its various tools, and that's what most developers are used to using. However, the existing build system (an internal flavor of Jam) is very entrenched, and for a variety of factors cannot be changed.

The idea:

  1. Create a project for each component. I did this using a description generated by Jam of what files go into each library, and making that into a QT project file. I call qmake on this to generate Visual Studio projects with "qmake -tp vc".

  2. Disable Visual Studio's build. I did this by changing the Type of each source file to "does not participate in build" (by changing each to )

  3. Add a pre-build event that calls the Jam build.

Problem:

Now, when I try to build from Visual Studio, it works, in that it calls Jam. However, I would expect Visual Studio to think the project is always up-to-date, considering it is not actually tracking any source files for compile. But it is always out-of-date, and must call the pre-build command before debugging (which attaches the debugger to the executable, and works just fine).

I used DebugView to see what was going on, and for many of my projects, I get the following in the log

#xA;

I've searched high and low, but cannot find any reference to @echo as a file input to anything anywhere. Does anybody know, and/or is there a way to track down why it is looking for this?

0 投票
1 回答
346 浏览

c++ - 如何通过 jam 传递 cflags

我正在尝试通过 Jam 编译和链接 DLL。这是一个仅资源的 DLL,所以我需要弄清楚如何通过 Jam 将 /noentry 标志传递给链接器。

这是我的 Jamfile 现在的样子:

提前致谢!

0 投票
1 回答
564 浏览

linux - Jamfile - “未知规则” - 如何读入它

我正在尝试编译这个项目 - 它在 Linux(ubuntu)中完美编译。但我希望它可以在 Windows 上运行。所以我安装了 MinGW(安装了 Jamplus)——并继续安装项目所需的所有库。这样做之后(呸!) - 我下载了这个项目的 src 并做了 './autogen' + './configure -prefix=/mingw' 然后当我卡住时,我收到“未知规则”警告。是因为它们是unix命令而MinGW无法理解吗?还是果酱?它无法理解诸如“UseAutoconf”和“Install Docs”之类的行 - 我对 Jam 构建系统相对较新,任何帮助将不胜感激。谢谢。

这是 jamfile - http://pastebin.com/z3FsMjDt

http://i1268.photobucket.com/albums/jj568/amitahire/jam-minggw.png

而且当我这样做时 ./autogen - 它说

configure.ac:144:警告:AC_LANG_CONFTEST:在正文 /mingw/src/autoconf/26/autoconf2.5-2.68-1/src/autoconf-2.68/lib/autoconf/lang.m4:194 中未检测到 AC_LANG_SOURCE 调用:AC_LANG_CONFTEST扩展自... /mingw/src/autoconf/26/autoconf2.5-2.68-1/src/autoconf-2.68/lib/autoconf/general.m4:2662: _AC_LINK_IFELSE 扩展自... /mingw/src /autoconf/26/autoconf2.5-2.68-1/src/autoconf-2.68/lib/autoconf/general.m4:2679: AC_LINK_IFELSE 扩展自... mk/autoconf/np_findlib.m4:3: NP_FINDLIB 扩展自... configure.ac:144:顶层

另外六个。但是我忽略了它并继续进行配置进度,这没有问题。

编辑 - 这似乎解决了这个问题。

这个特定的项目(我想)不是用 Jamplus 0.3 编译的。因此,当我尝试使用 Jam 2.5(或 Ftjam)时,它会编译。

0 投票
1 回答
1213 浏览

backbone.js - Require.js 构建不使用 Jam 加载的连接脚本

在Addy Osmani (O'Reilly) 关于Grunt-BBB (Backbone Boilerplate Buddy)的“开发 Backbone.js 应用程序”一章之后,我无法创建构建配置文件。

这是用于此的文件系统树:

/development这是我在目录中遵循的步骤:

1) 安装 Grunt-BBB ( npm install -g bbb)

2) 下载 r.js,Require.js 项目的一部分 ( git clone https://github.com/backbone-boilerplate/grunt-bbb)

3) 初始化样板文件( bbb init)

这是我用来为 Google Closure 编译器配置 r.js AMD 加载器的 build.js 文件:

这是我使用的 build.sh 文件:

我的目标是优化、缩小、连接所有 JavaScrit 文件,包括库和模板(我还没有,我只使用样板文件)以及 CSS 文件。

我通过运行得到的结果./build.sh是每个文件都被正确最小化(除了 CSS 规则内联,但这不是重点)并连接,但由 Jam(结合 NPM 和 Require.js 的包管理器)加载和管理的资源是'没有串联。

原因是它们已经被 Jam 加载/管理,它们不会在 JavaScript 文件 AMD 样式中重新声明。

总之,我的问题如下:

  • 如何重写我的build.js配置文件,以便 Jam 加载的资源也包含并连接到 release/dist 文件中?

  • 我怎样才能使连接的资源不会复制到 realse / dist 目录中?是否可以在build.js文件中配置它或者应该在我的build.sh文件中配置它?

编辑:新的 build.js 文件:

这是错误:

0 投票
1 回答
517 浏览

jam - 依赖中断构建

我正在尝试使用 Haiku Jam 构建一个项目。(该项目的代码可在https://github.com/Andromeda-OS/LLVM在线获得。我建议至少查看该项目中的目录名称,以便您知道我在下面指的是哪些组件。)

我正在尝试(重新)构建llvm-tblgen实用程序。llvm-tblgenlibLLVMSupportlibLLVMTableGen有链接时依赖性。如果我添加一个 JamDEPENDS语句以llvm-tblgen要求libLLVMSupport首先构建,那么 Jam 根本不会构建llvm-tblgen。Jam 输出don't know how to make ./bin/llvm-tblgen/llvm-tblgen,并且没有给我其他有用的诊断信息,即使在高详细级别运行时也是如此。

如果我从 中删除每个依赖项命令llvm-tblgen,那么只有这样 Jam 才会编译该文件。但是,如果libLLVMSupport.a不存在,则会导致链接器错误,因为没有告诉 Jam 先编译libLLVMSupport。但是,如果我告诉 Jam 先构建libLLVMSupport,则llvm-tblgen根本不会构建!任何指针?

0 投票
1 回答
86 浏览

macos - 创建应用程序结构

我正在尝试使用 Haiku Jam 创建一个 OS X 桌面应用程序。我需要的唯一文件是:

  • <appname>.app(目录)
  • <appname>.app/Contents(目录)
  • <appname>.app/Contents/Info.plist(文件)
  • <appname>.app/Contents/MacOS(目录)
  • <appname.app>/Contents/MacOS/<appname>(可执行文件;这是实际构建的二进制文件)

问题是我不知道正确的 Jamfile 代码来告诉 Jam 创建这些文件和目录。你会认为我会创建一个调用内置MkDir和规则的“应用程序”File规则。那是我的方法,除了由于缺少命令而无法运行所有DEPENDS命令。不幸的是,如果我添加DEPENDS使NOTFILE目标依赖于所需文件和目录的命令,我会收到奇怪的循环引用错误、规则未运行(可能是由于循环依赖)等。我该怎么办?

(在make中,这将非常简单,因为make每次都按照键入的顺序运行命令。我会创建一个make规则并让它根据需要重复调​​用。mkdircp