问题标签 [buildconfiguration]

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 投票
0 回答
691 浏览

c++ - 有效管理 Eclipse/CDT 构建配置有哪些好的选择?

我们的目标是利用嵌入式 ARM/Linux 平台中的软件重用。我们的一些硬件平台专为满足客户的特定需求而设计。当然,应用程序也会以各种方式进行定制。

虽然它不是 Android 产品,但与我们的产品相比它太大了,它确实做了一个很好的类比,除了始终基于 Linux 之外,UI 有不同的外观和感觉,有不同的手机,有不同的CPU,不同的无线电有不同的固件等。所以有很多配置需要管理。并且配置是一个稀疏矩阵,因为并非所有组合都存在。

持续集成在未来也并非完全不可能。

因此,在不久的将来,终点似乎是:

  1. 我们希望继续开发并在任何地方应用的一组核心库。类继承提供定制。所以有一个应用程序类型的构建配置。

  2. 少数定制的 ARM/Linux 硬件平台。似乎我们的图书馆的 BSP/board 类 HAL 是要走的路。这意味着选择正确的硬件/板的构建配置。

  3. 少数与硬件/板匹配的协处理器固件,但我们库的 API 是相同的。所以有一个取决于固件的构建配置。

  4. 少数不同外观和感觉/应用程序的实现。这是另一个构建配置。

不用说,有许多包含路径、#define 和文件排除来使所有这些工作。

如您所见,如果我们想要在工作空间中收集 Eclipse/CDT 项目,允许我们在同一环境中一次构建所有这些变体,那么在 Eclipse/CDT 中有很多配置需要创建和管理。如果 GUI 是唯一的管理方式,则需要大量的鼠标点击。在那之后,没有简单的方法来验证所有配置是否正确设置,而无需更多的鼠标点击。没有仪表板视图。是否有基于文本编辑器的方法来管理所有这些?

我确实试着做我的功课。我了解“路径和符号”选项卡中有“导入设置...”和“导出设置...”按钮。但它一次只为一个项目做一个配置。看起来不是很系统,很容易漏掉一些东西。

我也直接查看了 .cprojects,但我担心如果我犯了错误,Eclipse 会默默地做意想不到的事情,并且会付出很大的努力来修复。

各位高手有没有更好的建议?

0 投票
2 回答
4721 浏览

c++ - 如何让 CMake 检查我的标头是否自给自足?

设置

我有一个使用 CMake 构建和运行良好的项目。我的项目设置是这样的:

我的标题的内容是这样的:

我使用以下CMakeLists.txt

命令序列mkdir build, cd build, cmake ..,make./main正确打印“Hello World!” 没有警告。

问题

上面的设置是正确的。但是假设<iostream>不包括在内,x.hpp而是在main.cpp代替。那么程序仍然会正确构建,但x.hpp不会是独立的标题。所以我想测试我的头文件的自给自足,即我想为每个头文件编译一个小测试程序

但是,如果我将以下部分添加到CMakeList.txt

${header_files}正确地展开到标头x.hpp,但check_include_files()命令没有正确编译它

问题

显然我缺少一些配置变量,让 CMake 在正确的位置进行搜索。即使对于正确的标题,check_include_files()也不起作用。我需要做什么才能完成这项工作?只有当正确的标题被认为是正确的,我才能继续测试不正确的标题。

注意除非绝对必要,否则我对直接调用的循环TRY_COMPILE或类似的shell脚本或精心制作的CMake不感兴趣。AFAICS,这就是CheckIncludeFiles模块的用途,如果可能的话,我想知道如何正确配置它。

0 投票
1 回答
3151 浏览

visual-studio - 将默认构建配置添加到 Visual Studio

我和我的团队在多个项目中使用 VS2012,并与我们的 QA 和 UAT 团队开发了一个工作流,其中涉及 5 个环境:本地、开发阶段、测试、预生产和生产。我们发现自己必须为每个项目和解决方案创建 Local/Dev/Test/Preprod/Prod 构建配置,并删除调试和发布配置。

有没有办法让 VS 在新项目而不是调试/发布配置上默认创建这些环境?

编辑:我找不到任何全局选项,因为似乎构建配置都在各个项目文件夹中。

我所做的是找到一些我最常见的项目并因此修改了项目模板:

  • 修改 .csproj 文件并将 PropertyGroups 替换为以下内容: /li>
  • 添加我适当的 Web.Config 转换指令: /li>
  • 修改了我的 .vstemplate 文件并替换了 Web.Debug 和 Web.Release 配置条目,如下所示: /li>
  • 我将 Web.Debug.config 复制并重命名为 Web.Local.config、Web.Dev.config,并将 Web.Test.config 和 Web.Release.config 复制并重命名为 Web.Preprod.config 和 Web.Prod.config。

当我创建新项目时,我想要的所有环境都在那里,调试就消失了!但是,Release 仍然存在,包括我删除的 web.Release.Config 文件。知道这个无关的配置文件/构建配置可能来自哪里吗?

0 投票
1 回答
2589 浏览

xcode - Xcode,包括构建中的外部参考文件夹

我的硬盘上有一个文件夹,它基本上是我创建的方便类的库(文件是 .h 和 .cpp)。我想将它们保留在外部,以便我可以从多个正在进行的项目中一致地引用它们。

我使用添加现有文件并选择文件夹,将其作为参考(蓝色文件夹)添加到我在 xcode 中的类文件夹中。当我尝试从项目文件中访问这些文件时,我得到了一系列错误,因为显然我不知道我在做什么。我需要采取哪些步骤来确保我的所有外部文件都包含在构建中?

谢谢!

0 投票
0 回答
487 浏览

xcode - xcodebuild (version 4.6.3) -configuration 参数不会覆盖 buildConfiguration 中的属性.xcscheme

在早期版本的 Xcode 中可能就是这种情况,但我不确定。我注意到使用命令行归档(就像通过 jenkins 编写的脚本一样)不允许我使用 xcodebuild 参数选项覆盖配置。

例子:

我想使用工作区文件“testscheme.xcworkspace”生成“TestScheme”的存档

这是我的 TestScheme.xcscheme 的相关部分

这是我在命令行中运行以构建存档的内容:

生成的是使用“Ad Hoc”配置构建的存档。我倾注了我的 xcscheme 文件、xcworkspace 目录等,但我不明白为什么“-configuration”命令行参数没有任何效果。

0 投票
1 回答
1260 浏览

tfs - TFS '$(BuildLocation)' 宏指向实验室环境模板上的错误路径

我很难找到有关此的任何信息。我刚刚为我们的一个主要项目创建了一个Build-Deploy-Test构建定义,但是当工作流运行时,它会报告“$(BuildLocation)”宏的错误值,这会破坏从部署阶段开始的所有内容(测试也试图在这个错误的路径上运行)。

我知道是什么导致了问题,但我不知道如何解决它。我们将实验室一重定向到的构建定义被配置为构建我们解决方案的“发布”配置。放置文件夹是“\outputServer\drops”。我希望 BuildLocation 宏随后返回"\\outputServer\drops\<BuildName>\<BuildNameFormat>",但宏正在返回"\\outputServer\drops\<BuildName>\<BuildNameFormat>\Release"

我最初认为这是LabDefaultTemplate.11.xaml模板(这是我正在尝试使用的模板)和DefaultTemplate.xaml我基于自定义模板的旧模板之间的不兼容。我尝试更新我们的自定义模板以将新的默认 ( DefaultTemplate.11.1.xaml) 作为基础,但在转换模板后问题仍然存在。

即使查看 上的代码DefaultTemplate.11.1,我仍然看不到它完全按配置名称过滤输出。那里唯一的处理基于解决方案或项目名称,默认情况下禁用(由构建定义配置中高级类别下的“解决方案特定构建输出”选项控制)。

为什么假设放置文件夹以“Release”结尾,而放置的输出根本没有放在该文件夹中?我设法通过将“..”附加到路径来使部署脚本运行良好,就像这样,$(BuildLocation)\..\myScript但是当工作流尝试运行自动化测试时,它似乎正在使用相同的宏并且显然没有找到测试 dll .

可以通过不在定义选项中的“要构建的项目”元素上指定构建配置来解决此问题(因此让它选择默认配置),但指定配置是我们有意识的决定,因为有是文件的差异,当项目以发布模式构建时,某些配置的转换方式不同。

我目前正在使用 VS2012 Update 3/TFS 2012 Update 2 这对任何人都有帮助。

更新:

好的,我发现它在模板本身内部执行此操作。实验室工作流程非常简单的事实在这里有所帮助。

Compute build location needed“if 语句”中,有一个似乎正在执行这种奇怪连接的赋值。这是代码:

我什至不确定这应该是什么意思。这种行为对我来说似乎是一个错误,因为构建模板本身(不是实验室模板)不执行此连接。LabTemplate 怎么能假设这种事情呢?

0 投票
2 回答
1050 浏览

c++ - #define hell C/C++ 的替代方案/工具

在我们的 C/C++ 项目中,我们使用了一个包含 #ifdef 和 #defines 的配置头(约 1000 行)

在我们的构建配置中,我们预定义了一些传递给编译器的定义。这会在我们的配置头中产生不同的定义(如 SOME_FEATURE_AVEILABLE)。

由于我们的配置头很大,所以也有点乱。

#define这个地狱有其他选择吗?

或者是否有任何工具可以帮助查看在什么情况下设置了哪些定义。

我们正在开发嵌入式固件,因此我们无法通过运行时 if 替换条件编译。

0 投票
0 回答
238 浏览

c# - 预构建事件上的 Visual Studio .NET Ref-Def-Mismatch

我的 C# 项目中有一个预构建事件设置为以下内容:

它编译解决方案并将 MyApp.dll 和 MyAppInterop.dll 复制到我的目标目录,以便我的 C# 项目使用 c++ CLI 互操作 MyAppInterop.dll 来引用其程序集。但是,当 MyAppInterop 的构建成功时,它会被分配一个新版本。我的 C# 中的当前引用引用了以前的构建版本。有没有办法告诉 IDE/编译器在预构建阶段使用这个新复制的版本而不是旧版本......?我可以看到该文件已正确复制到我期望的目标位置。此外,在 VS 中,我在输出中看到以下内容:

考虑为“....\x64\Debug\MyAppInterop.dll”,但其名称“MyAppInterop, Version=1.0.4980.14942, Culture=neutral, PublicKeyToken=ddf0b8c12962ac51”不匹配。

它找到了它的dll,只是不喜欢版本号。我希望它就像为当前构建运行“替换”汇编命令一样简单。这可能吗 ?

谢谢!!

0 投票
3 回答
22757 浏览

c# - #if 调试 --> #if myOwnConfig?

在 Visual Studio 中有没有办法使用像“#if DEBUG”这样的自定义配置

我需要一个“#if OFFLINE”,因为我的 Build-Config 的名称是“Offline”(也仅用于进一步的调试目的)......

谢谢!

0 投票
0 回答
92 浏览

c++ - “调试”构建配置有效,复制构建配置不起作用

使用 Microsoft Visual Studio 2012,我有一个项目 ( https://github.com/ThrosturX/freespace/ ),我可以使用构建配置来构建这个项目Debug——背景中的交互式星星、一颗行星和一艘可控的太空船。

但是,当我使用配置进行构建时Release,屏幕上没有呈现任何内容——它只是呈现为黑色。但是,窗口已创建,并且我的钩子 ( while(SDL_PollEvent(&e))) 似乎正在工作,因为 Escape 终止了程序,按下x窗口顶部的 关闭它也是如此。

试图找到这个原因的根源,我创建了一个新的构建配置dist,用作Debug模板(因此Debug我假设完全复制)。但是,尝试使用此构建配置构建和运行程序的行为与构建配置完全相同Release——窗口中仅呈现黑色。

我的项目使用SDL2来渲染图形。请让我知道我可以提供哪些信息来帮助诊断问题。有任何想法吗?

更新:我发现将我的 \lib 文件夹中的一些 dll 添加到输出目录(“Release”)可以解决问题,所以我现在只需找出如何将所有 dll 正确捆绑到 .exe 中.