【发布时间】:2019-07-26 18:07:45
【问题描述】:
编译时,我总是将构建放在一个单独的目录中。例如:
mkdir build
cd ./build
(cd ..; ./bootstrap)
../configure
make
因为我有足够的内存,所以目标是在 TMPFS 上编译。
脚本获取项目名称,将其用作在$XDG_RUNTIME_DIR/build 中创建的目录的名称,最后链接它。
# setup-build.sh
#!/usr/bin/bash
set -e
my_project_name=$(basename $(pwd))
my_project_build_dir="$XDG_RUNTIME_DIR/build/$my_project_name"
mkdir -p $my_project_build_dir
ln -s "$my_project_build_dir" "$(pwd)/build"
脚本运行没有问题。但是,当我执行cd ./build; ../configure 时,它会返回一个错误:bash: ../configure: No such file or directory。该文件肯定存在,但 Bash 找不到!
【问题讨论】:
-
你能试试
cd ./build; echo $PWD吗?当它 try=ies 执行 ../configure 时,这会告诉你你在哪里 -
你没有设置
$XDG_RUNTIME_DIR。它是否在脚本的父环境中导出?如果是,declare -p XDG_RUNTIME_DIR应该在其输出中包含-x。 -
@kkawabat
cd ./build; echo $PWD返回/home/gareth-anthony-hulse/Projects/prog/cpp-vulkan-triangle/build。 -
@dennis-williamson
$XDG_RUNTIME_DIR默认为/run/user/$UID。在我的情况下,$UID返回1000。 -
对不起,我的意思是之前。没有
cd..命令。