编译时,我总是将构建放在单独的目录中。例如:
mkdir build
cd ./build
(cd ..; ./bootstrap)
../configure
make
由于我有足够的RAM,所以目标是在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找不到它!
答案 0 :(得分:0)
我将脚本更改为此:
#!/usr/bin/bash
set -e
my_project_src_dir="$(pwd)"
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 "$my_project_build_dir"
echo "$my_project_src_dir" > "./project-src-dir.txt"
要进行编译,我必须输入cd ./build; $(cat ./project-src-dir.txt)/configure; make
。但是,这会导致Bash完全中断。就像我无法使用此方法从$my_project_src_dir
来完成文件名的TAB一样,但是对参数进行TAB的完成效果很好。如果需要autoconf
:(cd $(cat ./project-src-dir.txt); ./bootstrap)
。如果有人有其他想法,我仍然希望能够../configure
,尽管现在必须这样做。
编辑:必须将my_project_name="$(basename '$my_project_src_dir')
更改为my_project_name="$(basename $(pwd))"
,因为它实际上是'$my_project_src_dir'
。