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 \
次の文字がないことを確認してください。\