标签: build-system

实现版本控制系统的好策略

我一直在努力使用版本控制软件.我不是在谈论命名约定,我在谈论如何在构建系统中实际应用版本直到发布.

我一般使用major.minor.maintenance- [release type]即1.0.2-rc1

问题是管理版本号.我尝试了很多方法(将它粘贴在构建文件,属性文件,数据库等等)但我还没有发现任何真正有效的方法.

我想出的最接近的是使用Jira,我在这里记录:http: //blog.sysbliss.com/uncategorized/release-management-with-atlassian-bamboo-and-jira.html

我想知道是否有人对此有任何好的想法.此外,想知道人们如何处理发布版本....即如果我发布/部署版本1.0.0-rc1执行此版本中发现的错误然后登录到1.0.0(下一个/生产版本).

versioning build-system

5
推荐指数
1
解决办法
5190
查看次数

具有多个命令的Sublime Text Build System

首先,我想说我是崇高文本编辑器的新手,我喜欢它.我没有使用JSON的经验,但它看起来并不困难.

我正在尝试编写一个构建系统,它将调用一个bash脚本,将一个makefile移动到我正在工作的目录中并调用makefile,它将使用avr-gcc编译我的c代码然后使用它将其闪存到连接的微控制器上AVRDUDE.

我意识到sublime text 2只能有一个"cmd"对象,所以我尝试从终端模拟器调用一行中的所有东西,它完全符合我的预期.电话是:

checkAVRmakefile.sh $PWD; make PROJECTNAME+=hello install
Run Code Online (Sandbox Code Playgroud)

我的脚本位于我的$ PATH环境变量的目录中,我将它传递给我正在使用的目录,因此它在那里检查makefile,如果它不存在,则从我保留所有目录的目录中复制它我的makefile.然后我调用make并将其命名为I,并调用该项目并安装闪存avr微控制器.

我用崇高做的是这样的:

{
"shell":true,
"cmd":[ "checkAVRmakefile.sh", "$file_path", ";" ,"make","PROJECTNAME+=$file_base_name","install"],
}
Run Code Online (Sandbox Code Playgroud)

这只运行bash脚本,它将makefile放在目录中但不运行make.

有谁看到我哪里出错了?

任何帮助表示赞赏.我也在崇高的论坛上问过类似的问题,但没有人回答.我也在Ubuntu上使用ST2.

linux avr makefile build-system sublimetext2

5
推荐指数
1
解决办法
4621
查看次数

需要在导出构建树中导出 CMake 目标

我有一个 CMake 项目,其中包含一个也可以用作独立 CMake 构建的Foobar子目录。examples为此,该子目录执行find_package(Foobar)并使用导出的目标。Foobar提供FoobarConfig.cmakeFoobarConfigVersion.cmake和 a FoobarExports.cmake,并且可以在没有 FindModule 的情况下使用。

代码大致如下:

### Top-Level CMakeLists.txt ###
cmake_minimum_required(VERSION 3.0.0)
project(Foobar)

add_library(X SHARED ${my_sources})
install(TARGETS X EXPORT FoobarExports
  LIBRARY DESTINATION ${my_install_destination})
install(EXPORT FoobarExports DESTINATION ${my_install_destination})
# Create the FoobarExports.cmake for the local build tree
export(EXPORT FoobarExports) # the problematic command

# Setup FoobarConfig.cmake etc
# FoobarConfig.cmake includes FoobarExports.cmake
# ...

# Force find_package to FOOBAR_DIR
option(BUILD_EXAMPLES "Build examples" ON)
if(BUILD_EXAMPLES)
  set(FOOBAR_DIR …
Run Code Online (Sandbox Code Playgroud)

cmake build-system

5
推荐指数
1
解决办法
1261
查看次数

在介子构建中,可以设置单元测试的工作目录吗?

在介子构建中,是否可以在执行单元测试之前设置工作目录?它默认使用 ninja 来运行测试,所以也许有一个选项可以传递给 ninja 来设置目录?

为什么我问的是有时单元测试需要访问配置/数据文件(我通常尝试避免这种情况,但有时这是不可能的)并且他们需要知道相对路径才能加载它们。

build build-system meson-build

5
推荐指数
1
解决办法
1931
查看次数

配置使用特定构建工具版本构建的 Xcode 项目

在我的构建系统中,我用来xcodebuild构建多个项目。

我想为每个项目配置不同的 Xcode 安装。

我知道sudo xcode-select --switch <path>,但是:

  • 此选项是系统范围的,可能会与其他并行构建混淆。
  • 它需要 root,我更愿意避免它(因为它是一个自动构建系统)。
  • 它没有在项目内部配置。

有没有办法指定每个项目使用的构建工具路径?

macos xcode build-system xcodebuild

5
推荐指数
1
解决办法
1411
查看次数

Yocto Bitbake 食谱如何覆盖 do_install() 和 do_install_append()

我正在尝试将开源“procps”包添加到我的工作 Yocto 构建中。这个包安装了一堆二进制文件,替换了 BusyBox 提供的二进制文件。我只想要这些二进制文件之一 - pgrep.

在我的图层中,我创建了一个名为“procps_%bbappend”的 bbappend 文件。它被构建选中,编译成功,但安装失败。错误消息似乎表明do_install()do_install_append()钩子没有被完全覆盖。

如何更改我的 bitbake bbappend 文件以仅安装该pgrep实用程序,而不安装来自“procps”包的其他标准安装?

这是我失败的 bbappend 文件:

do_install () {
    install -d ${D}${base_bindir}
    mv ${D}/../build/pgrep ${D}/bin/pgrep
}

do_install_append () {
    install -d ${D}${base_bindir}
    mv ${D}/../build/pgrep ${D}/bin/pgrep
}

bindir_progs = ""
base_bindir_progs = ""
base_sbindir_progs = ""
Run Code Online (Sandbox Code Playgroud)

这是整个“procps”bitbake 配方:

SUMMARY = "System and process monitoring utilities"
DESCRIPTION = "Procps contains a set of system utilities that provide system information about processes using \
the …
Run Code Online (Sandbox Code Playgroud)

linux build-system bitbake yocto

5
推荐指数
1
解决办法
2万
查看次数

构建系统中的 DESTDIR 与前缀选项?

$(DESTDIR)有人可以解释一下构建系统中变量的用途吗?我的意思是我知道它指向当前安装的软件包的临时目录,但我无法想象它的实际用途是什么。

为了澄清,我知道什么--prefix是选项,例如,如果我们指向 buldsystem like ./configure --prefix="/usr"all the package's files will own 、/usrlike等等,但在 Makefiles 中我还看到了以下结构:/usr/lib/usr/share

$(DESTDIR)/$(prefix)
Run Code Online (Sandbox Code Playgroud)

这样做的目的是什么?简而言之,两者的使用和使用时间DESTDIR有区别吗?prefix

makefile build configure build-system build-settings

5
推荐指数
1
解决办法
1758
查看次数

CMake 和 Ninja - “缺少并且没有已知的规则来制作它”

我有这个CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.8)

include(${CMAKE_CURRENT_SOURCE_DIR}/src/Something.cmake)

add_executable(execute main.cpp)
add_dependencies(somethingInterface Something)
add_dependencies(execute somethingInterface)

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/src
    )
target_compile_options(execute
    PRIVATE
        -std=c++11
        -g
)

add_library(library SHARED IMPORTED)
set_target_properties(library PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/library.so)
target_link_libraries(execute
    PRIVATE
        library
)
Run Code Online (Sandbox Code Playgroud)

共享导入的库将在文件Some.cmake 中创建,但必须先构建 tt。这是在文件中的add_custom_command(TARGET POST_BUILD ...)Something.cmake

我在这里使用 CMake 构建没有任何问题,但是当我使用Ninja 时出现错误

忍者:错误:“library.so”,“执行”需要,缺少并且没有已知的规则来制作它

或者你对如何做到这一点有什么建议?

我认为 Ninja 有一个要求,即“library.so”必须首先存在,但 CMake 是不同的。它在运行时检查库是否存在。

cmake build-system ninja

5
推荐指数
1
解决办法
4688
查看次数

在 PROJECTNAME_Tests 内循环;建筑可能会产生不可靠的结果

在问我正在看这个问题之前,我尝试了一切,但没有成功。

\n

我正在尝试创建一个私有的 cocoapods 库,但不断收到此错误。

\n
Showing All Messages\nCycle inside Subscriptions_Tests; building could produce unreliable results.\nCycle details:\n\xe2\x86\x92 Target \'Subscriptions_Tests\': CodeSign /Users/username/Library/Developer/Xcode/DerivedData/Subscriptions-dgxcyjrhborvtecmhutfjvyewrdg/Build/Products/Debug-iphoneos/Subscriptions_Example.app\n\xe2\x97\x8b Target \'Subscriptions_Tests\': CodeSign /Users/username/Library/Developer/Xcode/DerivedData/Subscriptions-dgxcyjrhborvtecmhutfjvyewrdg/Build/Products/Debug-iphoneos/Subscriptions_Example.app\n
Run Code Online (Sandbox Code Playgroud)\n

到目前为止我已经尝试过什么?

\n
    \n
  • 试图Build Phases超越Copy Bundle Resources所有其他人 -> 没有成功(这个答案
  • \n
  • 尝试更新CocoaPods、删除Derived Data-> 没有成功(这个答案
  • \n
  • 尝试Clean Build Folder->没有成功(这个答案
  • \n
  • 尝试禁用/重新启用Enable Modules (C and Objective-C)- >没有成功(这个答案
  • \n
  • 尝试了这个问题,似乎用户面临着几乎相同的问题,但我没有使用迦太基,所以它是无关紧要的。
  • \n
\n

xcode build build-system ios swift

5
推荐指数
0
解决办法
1624
查看次数

Yocto Dunfell 错误“没有可用的食谱”,单个自定义元层中的多台机器

我维护一个与 Dunfell 兼容的自定义 Yocto 元层。它支持基于 Microchip SAMA5D27 处理器的板。我在这一层中有几个 bbappend 文件,仅适用于来自 meta-atmel 和其他 Microchip 特定软件包的文件。

现在,我想重用此自定义元层的许多部分并支持来自不同供应商的新处理器。我在我的图层中创建了自己的新图像配方,其中不包含这些仅与 Microchip 相关的 bbappend 文件。

问题是 Yocto 会针对我的 bbappend 文件抛出错误“没有可用的食谱”。该错误似乎是在解析期间发生的,并且没有考虑我是否在当前目标中使用该配方。

我已经广泛寻找解决方案,但到目前为止一无所获。如何使用 1 个元层并维护不同的 bbappend 文件,同时能够为不同的目标构建切换机器变量?

比特烘烤版本:

root@buildmachine:/$ bitbake --version
BitBake Build Tool Core version 1.46.0
Run Code Online (Sandbox Code Playgroud)

我尝试在这些 bbappend 文件中使用 COMPATIBLE_HOST 和 COMPATIBLE_MACHINE 变量,但错误仍然存​​在。

# Only compatible with sama5d27 microchip
COMPATIBLE_HOST = "arm-poky-linux-musleabi"
COMPATIBLE_MACHINE = "sama5d27-wlsom1-ek-sd"
Run Code Online (Sandbox Code Playgroud)

错误输出:

root@buildmachine:~/Desktop/compulab/build-cmdline$ MACHINE=iot-gate-imx8 bitbake iot-gate-imx8-image
WARNING: Host distribution "ubuntu-20.04" has not been validated with this version of the build system; you may …
Run Code Online (Sandbox Code Playgroud)

linux build-system embedded-linux bitbake yocto

5
推荐指数
1
解决办法
8921
查看次数