我正在运行以下脚本,将调用 GROMACS 命令的名称更改gmx
为gmx_196g
。该脚本使用 CMake:
cd gromacs-2019.6/build_stage3/
suffix=196g
install_path=/home/my_username/software/gmx_2019/.local
OPTFLAGS="-Ofast -mtune=broadwell"
cmake3 .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=icc -DCMAKE_C_FLAGS_RELEASE="$OPTFLAGS" \
-DCMAKE_CXX_COMPILER=icpc -DCMAKE_CXX_FLAGS_RELEASE="$OPTFLAGS" \
-DGMX_MPI=ON -DGMX_OPENMP=ON \ -DGMX_GPU=CUDA -DGMX_CUDA_TARGET_SM=60 \
-DGMX_SIMD=AVX2_256 -DGMX_DOUBLE=OFF \ -DGMX_FFT_LIBRARY=mkl \
-DGMX_DEFAULT_SUFFIX=OFF -DGMX_BINARY_SUFFIX=_${suffix} -DGMX_LIBS_SUFFIX=_${suffix} \
-DCMAKE_INSTALL_PREFIX=${install_path}
make -j 8 make install
cd ../../
但是,我收到此错误:
CMake Error: The source directory "/home/my_username/software/gmx_2019/gromacs-2019.6/build_stage3/ -DGMX_FFT_LIBRARY=mkl" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
make: *** No rule to make target 'make'. Stop.
为什么错误突出显示 -DGMX_FFT_LIBRARY=mkl 和我的源目录?我很困惑为什么会发生这种情况......您的任何建议将不胜感激!
答案1
在这种情况下,反斜杠字符的含义是行继续字符,转义字面换行符。
当您在行中间放置反斜杠时,它会转义后面的字符,因此例如
-DGMX_MPI=ON -DGMX_OPENMP=ON \ -DGMX_GPU=CUDA -DGMX_CUDA_TARGET_SM=60 \
the\ -DGMX_GPU=CUDA
被读取为以文字空格开头的单个标记。因为它不以破折号开头,cmake
所以将其解释为源目录而不是选项。
要么删除这些多余的反斜杠
-DGMX_MPI=ON -DGMX_OPENMP=ON -DGMX_GPU=CUDA -DGMX_CUDA_TARGET_SM=60 \
或按预期使用它们,即作为续行符
-DGMX_MPI=ON -DGMX_OPENMP=ON \
-DGMX_GPU=CUDA -DGMX_CUDA_TARGET_SM=60 \
确保后面没有尾随字符\