cmake 建议使用源外构建。虽然总的来说我喜欢这个想法,但我发现从源代码外的子目录导航到相应的源目录并不方便。我经常需要代码来使用代码执行一些操作(例如 grep、svn 命令等)。
shell中是否有一种简单的方法可以从源代码外的子目录导航到相应的源目录?
谢谢迪玛
我更喜欢保持简单,将源代码签出放在一个src/
目录中,并将相应的构建放在一个build/
目录中。然后我可以使用
function cs() {
cd "${PWD/build/src}"
}
function cb() {
cd "${PWD/src/build}"
}
参照。也是KDE 的 TechBase的另一种方法。
我认为最直接和最方便的方法就是打开多个 Shell 会话,即选项卡。例如,KDE4 Konsole 支持选项卡,您可以使用 Shift + ArrowLeft 或 ArrowRight 在它们之间导航。恕我直言,非常舒适,而且它更好地保存了历史。
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
}
您是否尝试过pushd
and popd
builtins?
当在/source/directory
pushd /to/build/directory
在那里工作
popd
## 回到源目录
你甚至stack
可以更深...