我正在尝试使用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),没有运气.
考虑下一个代码:
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可以省略吗?我需要加快工作“部署”。它不需要项目源,但只需要工件。
典型.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) 我有一个跨平台项目,要在两个平台上构建:mac 和 linux(ubuntu)。
我的管道包含 3 个作业:
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) 如何检查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) 我通常会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 标准的一部分。
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) 我想在 VS Code 中查看 cppreference 中的 C++ 文档,而不是
有没有简单的方法可以让vscode和cppreference成为朋友?
鉴于下一个工作解决方案:
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)
我想知道是否有 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)