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 \

뒤에 오는 문자가 없는지 확인하십시오.\

관련 정보