4

cmake 建议使用源外构建。虽然总的来说我喜欢这个想法,但我发现从源代码外的子目录导航到相应的源目录并不方便。我经常需要代码来使用代码执行一些操作(例如 grep、svn 命令等)。

shell中是否有一种简单的方法可以从源代码外的子目录导航到相应的源目录?

谢谢迪玛

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

我认为最直接和最方便的方法就是打开多个 Shell 会话,即选项卡。例如,KDE4 Konsole 支持选项卡,您可以使用 Shift + ArrowLeft 或 ArrowRight 在它们之间导航。恕我直言,非常舒适,而且它更好地保存了历史。

于 2010-05-02T20:53:12.290 回答
0

Ok this is what what I found. The idea is to use CMakeCache.txt which is found in out-of-source tree. We go up while looking for cache file. Once found we extract source directory, which is stored in CMAKE_HOME_DIRECTORY varible.

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

您是否尝试过pushdand popdbuiltins

当在/source/directory

pushd /to/build/directory

在那里工作

popd ## 回到源目录

你甚至stack可以更深...

于 2009-07-28T12:24:39.813 回答