问题标签 [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.
c++ - 有效管理 Eclipse/CDT 构建配置有哪些好的选择?
我们的目标是利用嵌入式 ARM/Linux 平台中的软件重用。我们的一些硬件平台专为满足客户的特定需求而设计。当然,应用程序也会以各种方式进行定制。
虽然它不是 Android 产品,但与我们的产品相比它太大了,它确实做了一个很好的类比,除了始终基于 Linux 之外,UI 有不同的外观和感觉,有不同的手机,有不同的CPU,不同的无线电有不同的固件等。所以有很多配置需要管理。并且配置是一个稀疏矩阵,因为并非所有组合都存在。
持续集成在未来也并非完全不可能。
因此,在不久的将来,终点似乎是:
我们希望继续开发并在任何地方应用的一组核心库。类继承提供定制。所以有一个应用程序类型的构建配置。
少数定制的 ARM/Linux 硬件平台。似乎我们的图书馆的 BSP/board 类 HAL 是要走的路。这意味着选择正确的硬件/板的构建配置。
少数与硬件/板匹配的协处理器固件,但我们库的 API 是相同的。所以有一个取决于固件的构建配置。
少数不同外观和感觉/应用程序的实现。这是另一个构建配置。
不用说,有许多包含路径、#define 和文件排除来使所有这些工作。
如您所见,如果我们想要在工作空间中收集 Eclipse/CDT 项目,允许我们在同一环境中一次构建所有这些变体,那么在 Eclipse/CDT 中有很多配置需要创建和管理。如果 GUI 是唯一的管理方式,则需要大量的鼠标点击。在那之后,没有简单的方法来验证所有配置是否正确设置,而无需更多的鼠标点击。没有仪表板视图。是否有基于文本编辑器的方法来管理所有这些?
我确实试着做我的功课。我了解“路径和符号”选项卡中有“导入设置...”和“导出设置...”按钮。但它一次只为一个项目做一个配置。看起来不是很系统,很容易漏掉一些东西。
我也直接查看了 .cprojects,但我担心如果我犯了错误,Eclipse 会默默地做意想不到的事情,并且会付出很大的努力来修复。
各位高手有没有更好的建议?
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
模块的用途,如果可能的话,我想知道如何正确配置它。
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 文件。知道这个无关的配置文件/构建配置可能来自哪里吗?
xcode - Xcode,包括构建中的外部参考文件夹
我的硬盘上有一个文件夹,它基本上是我创建的方便类的库(文件是 .h 和 .cpp)。我想将它们保留在外部,以便我可以从多个正在进行的项目中一致地引用它们。
我使用添加现有文件并选择文件夹,将其作为参考(蓝色文件夹)添加到我在 xcode 中的类文件夹中。当我尝试从项目文件中访问这些文件时,我得到了一系列错误,因为显然我不知道我在做什么。我需要采取哪些步骤来确保我的所有外部文件都包含在构建中?
谢谢!
xcode - xcodebuild (version 4.6.3) -configuration 参数不会覆盖 buildConfiguration 中的属性.xcscheme
在早期版本的 Xcode 中可能就是这种情况,但我不确定。我注意到使用命令行归档(就像通过 jenkins 编写的脚本一样)不允许我使用 xcodebuild 参数选项覆盖配置。
例子:
我想使用工作区文件“testscheme.xcworkspace”生成“TestScheme”的存档
这是我的 TestScheme.xcscheme 的相关部分
这是我在命令行中运行以构建存档的内容:
生成的是使用“Ad Hoc”配置构建的存档。我倾注了我的 xcscheme 文件、xcworkspace 目录等,但我不明白为什么“-configuration”命令行参数没有任何效果。
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 怎么能假设这种事情呢?
c++ - #define hell C/C++ 的替代方案/工具
在我们的 C/C++ 项目中,我们使用了一个包含 #ifdef 和 #defines 的配置头(约 1000 行)
在我们的构建配置中,我们预定义了一些传递给编译器的定义。这会在我们的配置头中产生不同的定义(如 SOME_FEATURE_AVEILABLE)。
由于我们的配置头很大,所以也有点乱。
#define
这个地狱有其他选择吗?
或者是否有任何工具可以帮助查看在什么情况下设置了哪些定义。
我们正在开发嵌入式固件,因此我们无法通过运行时 if 替换条件编译。
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,只是不喜欢版本号。我希望它就像为当前构建运行“替换”汇编命令一样简单。这可能吗 ?
谢谢!!
c# - #if 调试 --> #if myOwnConfig?
在 Visual Studio 中有没有办法使用像“#if DEBUG”这样的自定义配置
我需要一个“#if OFFLINE”,因为我的 Build-Config 的名称是“Offline”(也仅用于进一步的调试目的)......
谢谢!
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 中.