CMakeエラーの理由は何ですか?

CMakeエラーの理由は何ですか?

gmx呼び出されるGROMACSコマンドの名前を変更するために、次のスクリプトを実行しています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 \

これは、\ -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 \

次の文字がないことを確認してください。\

関連情報