小编a_g*_*irl的帖子

尝试将 Git Bash 设置为终端的默认配置文件时,VSCode 设置中出现错误

我尝试将 Git Bash 设置为 VSCode 中的默认终端,但无法成功。我已经尝试遵循下一篇文章:

  1. 如何从 Visual Studio Code 集成终端在 Windows 上使用 Bash?
  2. 如何将 Git Bash 添加到 VsCode

但他们还没有解决我的问题。

我设法在 中生成配置文件settings.json,但 Git Bash 由于某种我未知的原因无法工作,并且 VsCode 显示错误。

我的settings.json

{
    "terminal.integrated.profiles.windows": {
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell"
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\\Sysnative\\cmd.exe",
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": [],
            "icon": "terminal-cmd"
        },
        "Git Bash": {
            "source": "Git Bash",
            "path": "C:\\git-sdk-64\\git-bash.exe",
            "args": [
                "--login",
                "-i"
            ]
        },
        "Cygwin": {
            "path": "C:\\cygwin64\\bin\\bash.exe",
            "args": [
                "--login"
            ]
        }
    },
    "terminal.integrated.defaultProfile.windows": …
Run Code Online (Sandbox Code Playgroud)

windows git-bash windows-10 visual-studio-code

7
推荐指数
2
解决办法
2261
查看次数

将 Android.mk 中的共享库包含到 Android.bp 的 cc_test 中

我有一个 Android.mk,它构建了一些库:

ifeq ($(CONDITION),something)
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
BDROID_DIR := $(TOP_DIR)system/bt
LOCAL_CFLAGS += \
        -Wall \
        -Werror
LOCAL_SRC_FILES := ...
LOCAL_HEADER_LIBRARIES := libutils_headers
LOCAL_C_INCLUDES += ...
LOCAL_SHARED_LIBRARIES := \
        libcutils \
        liblog
LOCAL_MODULE := libowner-vendor
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_OWNER := owner
LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_SHARED_LIBRARY)

include $(call first-makefiles-under,$(LOCAL_PATH))
endif
Run Code Online (Sandbox Code Playgroud)

我想向其中添加一个测试模块,最好是 cc_test,因为我希望能够使用 atest 实用程序调用它。

显然,像这样简单地将其添加到“shared_libs”部分是行不通的:

Android.bp:

cc_test = {
    proprietary: true,
    name: "libowner-vendor-test",
    cflags: [
        "-Werror",
        "-Wall",
    ],
    srcs: [...],
    shared_libs: [
        ...,
        "libowner-vendor",
    ],
    host_supported: false,
} …
Run Code Online (Sandbox Code Playgroud)

android android-soong

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

有边界的strchr吗?

char *strchr( const char *str, int ch )定义了一个函数<string.h>

它没有边界,之后它停止搜索。

某处是否有类似的功能,您可以将边界传递给它?

编辑:

我有一个char* pos和一个子字符串的长度,我想在其中找到一个特定的 ASCII 字符,但我不希望它搜索到非常空的终止符,因为我不关心第二部分字符序列。

c c++ string

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

什么是art.go?为什么它被认为是在 bp 文件中写入条件的一种方式?

我试图找到一种在 .bp 文件中写入条件的方法。

我在这里找到了一个文档:https : //android.googlesource.com/platform/build/soong/+/HEAD/README.md

它有一个“我如何编写条件?” 部分,它指向 art.go:https ://android.googlesource.com/platform/art/+/master/build/art.go

这几乎不是上述问题的答案。它需要比简单的链接更多的说明。

我的 Android.bp 中有 cc_binary 用于我开发的模块 (HAL)。

cc_binary {
  name: "name",
  init_rc: ["script.rc"],
  vintf_fragments: ["fragments.xml"],
  relative_install_path: "path",
  srcs: ["src1.cpp", "src2.cpp", ...],
  shared_libs: ["sh_lib1", "sh_lib2", ...],
  tstic_libs: ["lib1", "lib2", ...],
}
Run Code Online (Sandbox Code Playgroud)

我想添加一个条件 cflag (-DCONDITIONAL),如果环境变量 SOME_ENV_VAR 等于“some_value”,它将被设置为 1。

我在 AOSP 中发现了很多类似 *.go 文件的示例,但结果证明它们对我没有用,因为我不能简单地将那里描述的实践应用到我的案例中。我也没有找到任何关于 *.go 文件的文档,其中描述了如何使用它们做事。我什至找不到“最简单的用法示例”之类的东西。

有谁知道我在这里尝试做的事情有可能吗?

android android-soong

3
推荐指数
1
解决办法
1976
查看次数

如何像在 Linux 中一样在 git bash 中启用按页向上/向下进行历史搜索?

我希望我的 git bash 像 Ubuntu 一样按向上/向下翻页搜索历史记录。

我尝试简单地创建一个 ~/.bashrc :

    "\e[A":history-search-backward
    "\e[B":history-search-forward
Run Code Online (Sandbox Code Playgroud)

或这个:

    "\e[5~": history-search-backward   
    "\e[6~": history-search-forward  
Run Code Online (Sandbox Code Playgroud)

但它不起作用。当然。

有谁知道这可能吗?

windows git-bash

3
推荐指数
1
解决办法
1422
查看次数

如何在jthread中传递带有参数和stop_condition的函数?

我正在尝试做这样的事情

#include <iostream>
#include <thread>
#include <chrono>

void doWork(char a, std::stop_token st = {}) {
    while (!st.stop_requested()) {
        std::cout << a << '\n';
    }
}

int main() {
    std::jthread t1{doWork, 'A'}, // error
                 t2{doWork, 'B'}; // error
    std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
Run Code Online (Sandbox Code Playgroud)

但它不会在 gcc 主干上编译-std=c++2a

/opt/compiler-explorer/gcc-trunk-20200219/include/c++/10.0.1/thread:537:20: error: static assertion failed: std::thread arguments must be invocable after conversion to rvalues

  537 |      static_assert(is_invocable_v<decay_t<_Callable>,

      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  538 |       decay_t<_Args>...>,

      |       ~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

甚至有可能做这样的事情吗?

我认为这应该是可能的,因为我已经看到了一个与 lambda 类似的例子(这里):

//...
std::jthread t([&ready, &readyMutex, &readyCV] (std::stop_token …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++20

3
推荐指数
1
解决办法
209
查看次数

重击点。在组[]中

我希望能够快速从一个目录转到其名称与特定正则表达式匹配的祖先之一。我发现我可以使用选择然后在里面的expr match特定部分。然后我会添加一个简单的脚本作为别名,然后就到此为止了。基本上,我必须从类似的东西中进行选择。pwdcd.bashrc.../WoRd*//some/directory/path/WoRd.to-match_x/hello/world/

所以我写了一个正则表达式来做到这一点 -'\(.*/[wW][oO][rR][dD][a-zA-Z0-9_-.]*/\)'但它不起作用。它选择了整个字符串而不是带有“.../Word/”的部分。

$ str="/some/directory/path/WoRd.to-match_x/hello/world/"
$ echo "match: " $(expr match "$str" '\(.*/[wW][oO][rR][dD][a-zA-Z0-9_-.]*/\)');
match:  /some/directory/path/WoRd.to-match_x/hello/world/
Run Code Online (Sandbox Code Playgroud)

然后我尝试掩盖一个点,但这没有帮助:

$ echo "match: " $(expr match "$str" '\(.*/[wW][oO][rR][dD][a-zA-Z0-9_-\.]*/\)');
match:  /some/directory/path/WoRd.to-match_x/hello/world/
Run Code Online (Sandbox Code Playgroud)

一个小时左右的谷歌搜索和阅读正则表达式手册没有帮助。

实际上,我通过向左移动一个点来设法使这件事发挥作用:

$ echo "match: " $(expr match "$str" '\(.*/[wW][oO][rR][dD][a-zA-Z0-9_.-]*/\)');
match:  /some/directory/path/WoRd.to-match_x/
Run Code Online (Sandbox Code Playgroud)

我的 bash 版本是:GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

有谁知道为什么会发生这种情况?

regex bash

0
推荐指数
1
解决办法
373
查看次数