问题标签 [build-system]
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.
go - 哪些构建系统适用于 Go?
我知道 Go 源代码附带了一个$GOROOT/doc
我现在正在使用的 Makefile(它在 中),但是其他流行的构建系统是否添加了对 Go 的支持?有没有人为scons,waf等编写过构建脚本...
你用什么来构建你的 Go 程序?
build-system - 构建目标列表生成器时如何在 OMake 中处理具有未知目标的构建规则
我有一个使用 OMake 构建系统的项目,我正在尝试处理一个相当棘手的极端情况。
我有一些定义文件和一个可以获取这些定义文件并创建 GraphViz 文件的工具。但是有两个问题:
- 每个定义文件可以产生多个图形,它可以产生的图形列表被编码在文件中。我的转储工具确实有一个
-list
选项,它列出了定义文件将生成的所有图形。 - 此转储工具内置于源代码树中。
- 我希望这个列表在 OMakefile 中可用,这样我就可以使用其他规则将 DOT 文件转换为 SVG,并且有一个依赖于所有 SVG 的虚假目标(目标:构建我所有图形的 SVG 描述的单个构建命令)。
如果我只有第一个问题,那就很容易了——我会运行该工具来构建一个列表,然后使用该列表来构建一个目标,该目标调用转储程序来输出 GraphViz 文件。但是,我宁愿在需要之前强制构建转储工具。
如果是这样make
,我只会make
递归地运行来构建转储工具。但是,OMake 不允许递归调用,并且该build
函数只能从osh
.
有什么建议可以很好地解决这个问题吗?
c++ - 使用递归依赖聚合构建系统
我最近开始使用跨平台构建系统(按需生成 make 文件、Visual Studio 解决方案/项目等)建立自己的库和项目,我遇到了一个可能已经解决的问题。
我遇到的问题是:当一个应用程序有一个依赖项也有依赖项时,被链接的应用程序必须链接依赖项及其所有子依赖项。这以递归方式进行,例如
(为了争论,假设我们只处理静态库。)
- TopLevelApp.exe
- 依赖关系_A
- 依赖_A-1
- 依赖_A-2
- 依赖_B
- 依赖_B-1
- 依赖性_B-2
- 依赖关系_A
所以在这个例子中,TopLevelApp 将需要链接dependency_A、dependency_A-1、dependency_A-2 等,B 也是如此。我认为在目标应用程序中手动记住所有这些的责任是非常次优的。还有一个问题是确保所有目标都使用相同版本的依赖项(假设某些目标依赖于相同的东西,例如 boost)。
现在需要链接所有的库,并且没有办法绕过它。我正在寻找的是一个为你管理这个的构建系统。因此,您所要做的就是指定您依赖某些东西,并且该库的适当依赖项将自动被拉入。
我一直在研究的构建系统是 premake premake4,它不能处理这个问题(据我所知)。有谁知道可以处理此问题的构建系统?如果没有,那为什么不呢?
static - 如何强制使用静态库而不是共享?
在我的 SConscript 我有以下行:
如何让 scons 使用 mylib.a 而不是 mylib.so,同时与其他库动态链接?
编辑:希望尽可能少地使用特定于平台的黑客。
c - Macro definitions for headers, where to put them?
When defining macros that headers rely on, such as _FILE_OFFSET_BITS
, FUSE_USE_VERSION
, _GNU_SOURCE
among others, where is the best place to put them?
Some possibilities I've considered include
- At the top of the any source files that rely on definitions exposed by headers included in that file
- Immediately before the include for the relevant header(s)
- Define at the
CPPFLAGS
level via the compiler? (such as-D_FILE_OFFSET_BITS=64
) for the:- Entire source repo
- The whole project
- Just the sources that require it
- In project headers, which should also include those relevant headers to which the macros apply
- Some other place I haven't thought of, but is infinitely superior
A note: Justification by applicability to make, autotools, and other build systems is a factor in my decision.
build-system - 使用构建系统进行可重复的研究?
我正在做一个涉及一系列程序的研究项目,每个程序都会生成一个输出文件,该文件成为下一个程序的输入。我想让重复我用来创建所需输出的一系列命令变得容易。似乎make或任何其他构建系统都非常适合这项任务,但是我看过的所有构建系统(可能除了make本身)似乎都强烈倾向于从源代码构建可执行文件,并且我不知道如何对他们做任何其他事情。除了将源代码编译成可执行文件之外,有没有人有使用构建系统完成任务的经验?我可以轻松地使用构建系统来促进可重复的研究,还是应该寻找不同类型的工具?
build - Autotools、Cmake 和 Scons 之间有什么区别?
Autotools、Cmake 和 Scons 之间有什么区别?
c++ - 了解 C++ 编译
我最近意识到,一般来说,我不知道 ac/c++ 编译器是如何工作的。我承认这最初来自于试图理解标头守卫,但后来意识到我缺乏编译的工作原理。
以 Visual C++ 为例;有“头文件”文件夹、“资源文件”文件夹和“源文件”文件夹。这些文件夹的分离以及您放入其中的内容有什么意义吗?对我来说,它们都是源文件。获取代码片段:
片段 1
和
和
编译器错误提示“a1.cpp(3) : fatal error C1004: unexpected end-of-file found” 我希望它不会因为 a1.cpp 文件不是 #included 哪里存在 main 方法下一个代码片段
片段 2
和
和
由于“main.cpp(6) : error C2065: 'b': undeclared identifier”而出错。如果您像这样包含 a1.cpp
片段 3
和
和
编译器抱怨“a1.obj : error LNK2005: "int b" (?b@@3HA) already defined in main.obj”。int r = 4
片段 2 和 3 都忽略了没有缺少分号的事实,因为我怀疑它与其 xxxx.h 文件有关。如果我从片段 1 的项目中删除 a1.cpp 文件,那么它编译得很好。显然,我所期望的不是我得到的。有很多关于如何在 cpp 中编码的书籍和教程,但 cpp 在编译过程中处理文件和源代码的方式并不多。这到底是怎么回事?
android - 如何在 Android 中包含 envsetup.sh 的命令?
嗨,我在编译时在我的 android 源代码上运行了命令 ./build/envsetup.sh。我想使用同一文件中存在的以下命令。-cgrep -mmm -mm
但我收到以下错误!
我应该如何解决这个问题?我需要对 envsetup.sh 文件进行任何更改吗?
mono - .sln 兼容的基于 Mono 的 CLI 构建系统?
我最近开始与使用 Visual Studio 的其他人一起进行 ASP.NET MVC 工作。虽然 MonoDevelop 可以打开他们的项目工作区文件(来自 MSVS2010 的 .sln)并很好地构建项目,但我很好奇是否有可以与 Mono 一起使用的 CLI 构建工具?我想简单地使用 vim 并切换到我的 shell 并运行一个简单的命令来构建工作区。如果这已经被排除在外,有什么想法吗?
作为额外的奖励,有人知道 ctags 或类似的插件是否适用于 vim 吗?我仍然需要不时查找 .NET 命名空间文档。