cmake源和源外导航

时间:2009-07-28 12:03:07

标签: linux bash cmake

cmake建议使用out-of-source构建。虽然总的来说我喜欢这个想法,但我觉得从源外子目录导航到相应的源目录是不舒服的。我经常需要代码来执行一些代码操作(例如grep,svn命令等)。

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

由于 迪马

4 个答案:

答案 0 :(得分:3)

我更喜欢保持简单,并在src/目录中进行源检查,并在build/目录中进行相应的构建。然后我可以使用

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

比照。还KDE's TechBase用于另一种方法。

答案 1 :(得分:1)

我认为最简单方便的方法是打开多个Shell会话,即制表符。例如,KDE4 Konsole支持选项卡,您可以使用Shift + ArrowLeft或ArrowRight浏览它们。恕我直言,非常舒服加上它可以更好地保存历史。

答案 2 :(得分:0)

您是否尝试过pushd and popd builtins

/source/directory

  

pushd /to/build/directory

     

在那里工作

     

popd ##返回源目录

你甚至可以stack更深......

答案 3 :(得分:0)

好的,这就是我发现的。我们的想法是使用在源外树中找到的CMakeCache.txt。我们在寻找缓存文件时上去。一旦找到,我们提取源目录,该目录存储在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
}