Cmake

CMake 出錯的原因是什麼?

  • March 26, 2021

我正在執行以下腳本來將呼叫 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 和我的源目錄?我對為什麼會發生這種情況感到困惑……您的任何建議將不勝感激!

在這種情況下,反斜杠字元是換行符,轉義文字換行符。

當您在一行中間放置一個反斜杠時,它正在轉義以下字元,例如

   -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 \

確保後面沒有尾隨字元\

引用自:https://unix.stackexchange.com/questions/641291