小编kyb*_*kyb的帖子

如何在Makefile中使用shell命令

我正在尝试使用ls其他命令的结果(例如echo,rsync):

all:
    <Building, creating some .tgz files - removed for clarity>
    FILES = $(shell ls)
    echo $(FILES)
Run Code Online (Sandbox Code Playgroud)

但我得到:

make
FILES = Makefile file1.tgz file2.tgz file3.tgz
make: FILES: No such file or directory
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用echo $$FILES,echo ${FILES}并且echo $(FILES),没有运气.

bash makefile echo

88
推荐指数
2
解决办法
15万
查看次数

在模数之前和分配操作之前,`if`语句是否冗余?

考虑下一个代码:

unsigned idx;
//.. some work with idx
if( idx >= idx_max )
    idx %= idx_max;
Run Code Online (Sandbox Code Playgroud)

可以简化为仅第二行:

idx %= idx_max;
Run Code Online (Sandbox Code Playgroud)

并将取得同样的结果.


好几次我遇到了下一个代码:

unsigned x;
//... some work with x
if( x!=0 )
  x=0;
Run Code Online (Sandbox Code Playgroud)

可以简化为

x=0;
Run Code Online (Sandbox Code Playgroud)

问题:

  • 有什么意义可以使用if,为什么?特别是使用ARM Thumb指令集.
  • 这些if可以省略吗?
  • 编译器有什么优化?

c c++ performance arm thumb

46
推荐指数
2
解决办法
5737
查看次数

在 Gitlab CE 中将制表符重新定义为 4 个空格

看到这个巨大的牙印很痛苦(对我来说)。有没有办法将标签大小设置为 4 个空格。

此图片取自本地 Gitlab CE 服务器,并进行了最少的定制。我认为 tabsize 8 个空格是默认的。

在此处输入图片说明

gitlab

13
推荐指数
2
解决办法
3014
查看次数

使用 GitLab CI 如何禁用一项作业的存储库克隆?

我需要加快工作“部署”。它不需要项目源,但只需要工件。

如何为唯一的工作禁用项目克隆?

典型.gitlab-ci.yml(伪)看起来像:

image: gcc

build:
  stage: build
  script:
  - ./configure
  - mkdir build && cd $_
  - cmake ..
  - make -sj8
artifacts:
  paths:
  - "build/*.elf"

deploy:
  image: artifactory
  variables:
  - DO_NOT_CLONE: 1  ## WANT THIS OPTION
  stage: deploy
  script:
  - push_artifacts build/*.elf
Run Code Online (Sandbox Code Playgroud)

yaml gitlab-ci

13
推荐指数
1
解决办法
3165
查看次数

对不同的 GitHub Actions 作业共享相同的步骤

我有一个跨平台项目,要在两个平台上构建:mac 和 linux(ubuntu)。

我的管道包含 3 个作业:

  1. 准备 docker 镜像以及构建项目所需的所有内容。
  2. 在准备好的 docker 容器中在 ubuntu 上构建,取决于步骤 1
  3. 在 MacOS 上构建,不需要任何东西

linux和macos的步骤绝对是一样的。但矩阵有很大不同,Linux 构建是在容器内运行的。

有没有办法在两个不同的工作之间共享步骤?

我尝试了 YAML 锚点,但 GitHub 不支持它们。

完整的工作流程

on:
  push:
    branches: [ main, support/1.2.x ]
  pull_request:
    branches: [ main, support/1.2.x ]

jobs:
  Docker-iroha-builder:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v2
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      -
        name: Cache Docker layers
        uses: actions/cache@v2
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      - …
Run Code Online (Sandbox Code Playgroud)

yaml github-actions

12
推荐指数
1
解决办法
7244
查看次数

检查C++中两种类型是否相等

如何检查C++ 11中的类型是否相等?

 std::uint32_t == unsigned;  //#1
Run Code Online (Sandbox Code Playgroud)

另一个片段

template<typename T> struct A{ 
  string s = T==unsigned ? "unsigned" : "other";
}
Run Code Online (Sandbox Code Playgroud)

c++ type-traits c++11

10
推荐指数
1
解决办法
7065
查看次数

使用 pandoc 从第一个标题设置 html 标题

我通常会README.md像人们为 等创建的github那样Pandoc生成

 <title></title>
Run Code Online (Sandbox Code Playgroud)

我想看到文件中的第一个标头。所以如果我有.md

# My README
text
## Second header
Run Code Online (Sandbox Code Playgroud)

Pandoc 应该生成

<title>My README</title>
Run Code Online (Sandbox Code Playgroud)

从第一个 1-# 标头生成会很好。所以

### Preface
# My README
text
## Second header
Run Code Online (Sandbox Code Playgroud)

仍然应该是

<title>My README</title>
Run Code Online (Sandbox Code Playgroud)

无论如何,我想避免.md使用元信息来扩展我的内容,这不是简单 Markdown 标准的一部分。

html markdown pandoc

10
推荐指数
2
解决办法
4824
查看次数

使用 GitLab CI 作业成功和失败时的不同工件

binary.bin作业成功和失败时需要上传工件build_trace.log

文物:当 我没有看到这样的能力时。

有什么棘手的黑客吗?

我想看到类似的东西

job:
  artifacts:
    - name: failed_trace_log
      when: on_failure
      paths:
      - build_trace.log
    - name: succeed
      when: on_success
      paths:
      - binary.bin
Run Code Online (Sandbox Code Playgroud)

目前的解决方法是:

job:
  artifacts:
    when: always
    paths:
    - build_trace.log
    - binary.bin
Run Code Online (Sandbox Code Playgroud)

gitlab-ci

10
推荐指数
1
解决办法
2297
查看次数

在 VS Code 中使用离线 cppreference 获取上下文帮助

这里是离线查看的 cppreference 档案

我想在 VS Code 中查看 cppreference 中的 C++ 文档,而不是

在此处输入图片说明

有没有简单的方法可以让vscode和cppreference成为朋友?

c++ visual-studio-code

8
推荐指数
1
解决办法
241
查看次数

使用 C++17/20 简化模板 has_field

鉴于下一个工作解决方案:

template<typename T, typename = void>
struct has_value_t : std::false_type { };

template<typename T>
struct has_value_t<T, decltype(T::value, void())> : std::true_type { };

template<typename T>
constexpr bool has_value = has_value_t<T>::value;
Run Code Online (Sandbox Code Playgroud)

想法取自/sf/answers/1016665121/

我想知道是否有 C++17/20 更简洁的方法来实现相同的效果。喜欢

template<typename T>
constexpr bool has_value = .....;
Run Code Online (Sandbox Code Playgroud)

用法:

template<typename T>
enable_if_t<has_value<T>,
std::ostream&> operator<<(std::ostream& os, T const& arg)
{
    return os << arg.value;
}
Run Code Online (Sandbox Code Playgroud)

c++ templates

8
推荐指数
1
解决办法
124
查看次数