4

cmake は、アウト オブ ソース ビルドの使用を推奨しています。一般的にはこのアイデアは気に入っていますが、ソース外のサブディレクトリから対応するソースディレクトリに移動するのは快適ではありません。コードでいくつかのアクションを実行するためにコードが必要になることがよくあります (例: grep、svn コマンドなど)。

シェルでソース外のサブディレクトリから対応するソースディレクトリに移動する簡単な方法はありますか?

ありがとうディマ

4

4 に答える 4

3

私はシンプルに保ち、ソースのチェックアウトをsrc/ディレクトリに置き、対応するビルドをディレクトリに置くことを好みbuild/ます。それから私は使うことができます

function cs() {
    cd "${PWD/build/src}"
}
function cb() {
    cd "${PWD/src/build}"
}

参照。別のアプローチについては、KDE ​​の TechBaseも参照してください。

于 2009-07-29T20:35:44.400 に答える
1

これを行うための最も簡単で便利な方法は、単純に複数のシェル セッション (つまりタブ) を開くことだと思います。たとえば、KDE4 Konsole はタブをサポートしており、Shift + ArrowLeft または ArrowRight でそれらをナビゲートできます。私見は非常に快適で、履歴をより適切に保存します。

于 2010-05-02T20:53:12.290 に答える
0

これが私が見つけたものです。アイデアは、ソース外ツリーにある CMakeCache.txt を使用することです。キャッシュファイルを探しながら上っていきます。見つかったら、CMAKE_HOME_DIRECTORY 変数に格納されているソース ディレクトリを抽出します。

function cdoos2src () {
    path=$(pwd)

    while [[ $path != "/" ]]; do
        if [[ -f $path/CMakeCache.txt ]]; then
            break;
        fi

        # go up one directory
        path=$(dirname $path)
    done

    if [[ $path == "/" ]]; then
        echo "This is not svn out-of-source directory - CmakeCache.txt not found"
        return
    fi

    oos_dir=$(pwd) 

    code_dir=$(sed -n '/CMAKE_HOME_DIRECTORY/s/.*=//p' $path/CMakeCache.txt)
    echo "Code dir     [$code_dir]"

    code_sub_dir=$(echo $(pwd) | sed  -n 's#^'$path'##p')
    echo "Code sub dir [$code_sub_dir]"

    cd $code_dir/$code_sub_dir
}
于 2009-07-29T08:12:39.577 に答える
0

pushdおよびpopdビルトインを試しましたか?

とき/source/directory

pushd /to/build/directory

そこで働く

popd ## ソースディレクトリに戻る

あなたはさらにstack深くすることができます...

于 2009-07-28T12:24:39.813 に答える