CMake出错的原因是什么?

CMake出错的原因是什么?

我正在运行以下脚本,将调用 GROMACS 命令的名称更改gmxgmx_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 \

确保后面没有尾随字符\

相关内容