cmake建议使用out-of-source构建。虽然总的来说我喜欢这个想法,但我觉得从源外子目录导航到相应的源目录是不舒服的。我经常需要代码来执行一些代码操作(例如grep,svn命令等)。
在shell中有一种简单的方法可以从源外子目录导航到相应的源目录吗?
由于 迪马
答案 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
}