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 \
뒤에 오는 문자가 없는지 확인하십시오.\