주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

파일 및 폴더 이름에 대한 빌드 프로세스 지원

공백이 포함된 파일 이름

ToolchainInfo 객체를 사용하는 빌드 프로세스의 경우, 다음 툴체인에서만 공백이 포함된 파일 이름 사용이 지원됩니다:

  • Linux®에서 GNU gcc/g++ | gmake (64-bit Linux)

  • Windows®에서 MinGW64 | gmake (64-bit Windows)

  • Mac에서 Xcode with Clang | gmake (64-bit Mac)

템플릿 makefile을 사용하는 빌드 프로세스는 공백이 포함된 파일명의 사용을 지원하지 않습니다.

공백이 포함된 폴더 이름

Windows 시스템에서 코드 생성기는 다음 두 가지 조건 중 하나에 해당할 경우, MATLAB® 설치 폴더에 해당하는 드라이브를 매핑합니다:

  • matlabroot 폴더는 UNC 경로입니다.

  • matlabroot 폴더의 경로에 공백이 포함되어 있으며, 이 시스템은 대체 이름 기능을 지원하지 않습니다.

이 폴더 경로에는 공백이 포함될 수 있습니다:

  • MATLAB 설치 폴더(matlabroot)의 경로입니다. 예를 들어, C:\Program Files\MATLAB\R2015b

  • 빌드를 시작하는 현재 작업 폴더(pwd)로 가는 경로입니다. 예: C:\Users\username\Documents\My Work.

  • 빌드 프로세스에서 사용하는 컴파일러의 설치 폴더로 이어지는 경로입니다.

작업 환경에 앞서 언급한 시나리오 중 하나 이상이 해당된다면, 빌드 프로세스에 대해 다음과 같은 지원 체계를 활용하십시오:

  • 생성된 코드를 빌드하기 위해 툴체인 방식을 사용하는 경우, 폴더 이름에 공백이 포함될 때 운영 체제의 지원 여부가 툴체인 작동에 영향을 미칩니다:

    • 8.3 형식 이름 생성이 활성화된 Linux 시스템 및 Windows 시스템의 경우, 툴체인은 운영 체제에서 제공하는 대체 이름을 사용하여 폴더 이름 내의 공백을 처리합니다. 이 툴체인은 TransformPathsWithSpaces 특성을 사용하여 이러한 이름을 관리합니다.

      addAttribute(toolchainObject, 'TransformPathsWithSpaces', true);

      드라이브 및 폴더의 보안 권한에 따라 툴체인이 경로를 변환할지 여부가 결정될 수 있습니다. 예를 들어, 경로에 8.3 경로 변환을 허용하지 않는 보안 구성이 적용된 폴더가 포함되어 있는 경우, 툴체인은 해당 경로를 변환하지 않으며 빌드 과정에서 경고가 발생합니다.

    • 8.3 형식 이름 생성이 비활성화된 Windows 시스템의 경우, 툴체인은 배치 파일(.bat)을 사용하여 네트워크 드라이브를 매핑함으로써 폴더 이름에 포함된 공백을 처리합니다. 이 작업을 수행하려면 툴체인 정의에 RequiresBatchFile 특성을 추가해야 합니다.

      addAttribute(toolchainObject, 'RequiresBatchFile', true);

    Windows 시스템용 툴체인을 개발할 때는 두 특성을 모두 설정하십시오. 툴체인 특성에 대한 자세한 내용은 addAttribute를 참조하십시오.

  • 생성된 코드를 빌드하기 위해 템플릿 makefile 방식을 사용하는 경우, 템플릿 makefile(.tmf)에서는 폴더 이름에 포함된 공백을 처리하는 코드가 필요합니다. 대체 폴더 이름(Windows 짧은 이름)이 파일 시스템 폴더 이름(Windows 긴 이름)과 다를 경우, 이 코드를 makefile에 추가하십시오.

    ALT_MATLAB_ROOT         = |>ALT_MATLAB_ROOT<|
    ALT_MATLAB_BIN          = |>ALT_MATLAB_BIN<|
    !if "$(MATLAB_ROOT)" != "$(ALT_MATLAB_ROOT)"
    MATLAB_ROOT = $(ALT_MATLAB_ROOT)
    !endif
    !if "$(MATLAB_BIN)" != "$(ALT_MATLAB_BIN)"
    MATLAB_BIN = $(ALT_MATLAB_BIN)
    !endif

    위치 토큰의 값이 같지 않을 때, 이 코드는 MATLAB_ROOTALT_MATLAB_ROOT로 대체합니다. 이 오류 메시지는 MATLAB 설치 폴더의 경로에 공백이 포함되어 있음을 나타냅니다. 이 코드는 MATLAB_BINALT_MATLAB_BIN로 대체하는 것과 동일한 방식을 적용합니다. 앞서 소개한 코드는 nmake에 특화된 것입니다. 플랫폼별 예제는 제공된 템플릿 makefile을 참조하십시오.

어느 빌드 방식을 사용하든, 대체 이름(짧은 이름) 생성에 대한 지원에 문제가 있는 경우 Windows에서 빌드 오류가 발생할 수 있습니다. 빌드 생성 과정에서 다음과 유사한 오류 메시지가 표시되면 폴더 이름에 공백이 포함된 경우 오류 해결 방법를 참조하십시오.

NMAKE : fatal error U1073: don't know how to make ' ...

systemdos와 같은 운영 체제 명령어를 사용할 때는, 실행 파일이나 파라미터를 지정하는 경로를 큰따옴표로 묶어야 합니다 (" "). 예를 들면 다음과 같습니다.

system('dir "D:\Applications\Common Files"')

이 테이블은 Windows의 빌드 폴더 지원 사항 및 제한 사항에 대한 개요를 제공합니다.

빌드 프로세스 폴더 생성UNC 또는 공백이 포함된 경로에 대한 처리 방법Windows에 대한 지원

matlabroot 폴더

matlabroot 값은 MATLAB의 설치 위치에서 파생됩니다.

빌드 과정에서 다음과 같은 UNC 경로:

\\networkdrive\matlab\R20xxb

다음과 같이 재매핑할 수 있습니다:

T:\

짧은 파일 이름(8.3)을 지원하는 Windows 시스템(NTFS를 사용하는 Windows의 기본 설정)에서 빌드하는 동안, 빌드 프로세스는 폴더 위치를 지정하기 위해 Windows API인 getShortPathName()를 사용합니다.

짧은 파일 이름(8.3)을 지원하지 않는 Windows 시스템(ReFS를 사용하거나 8.3 지원이 비활성화된 NTFS를 사용하는 시스템)에서 빌드하는 동안, 다음과 같이 경로에 공백이 포함된 위치의 경우:

C:\Program Files\MATLAB\R20xxb

다음과 같이 재매핑할 수 있습니다:

T:\R20xxb

파일 시스템(NTFS 또는 ReFS)이나 짧은 파일 이름 지원에 대한 파일 시스템 구성과 관계없이 빌드 프로세스 폴더를 사용할 수 있습니다.

제한 사항

설치 위치에 대한 드라이브 매핑이 필요한 시스템의 경우, 빌드 프로세스를 진행하려면 매핑에 사용할 수 있는 드라이브 문자가 있어야 합니다.

짧은 파일 이름(8.3)을 지원하지 않는 시스템(ReFS를 사용하거나 8.3 지원이 비활성화된 NTFS를 사용하는 경우)에서는 설치 경로의 마지막 폴더명에 공백이 포함되어서는 안 됩니다. 예를 들어, 아래의 최종 폴더 이름은

C:\Program Files\MATLAB\R20xxb sp1

지원되지 않습니다.

코드 생성 폴더

시뮬레이션 캐시 폴더

사용자 지정 코드 소스 파일의 위치—이 위치에는 특히 다음으로 지정된 폴더들이 포함됩니다:

  • rtwmakecfg.m

  • 모델 구성 파라미터 추가 빌드 정보

  • 코드 대체 라이브러리

UNC 경로의 경우, 빌드 프로세스는 pushdpopd 셸 명령을 사용하여 드라이브를 임시로 매핑합니다.

빌드 프로세스 폴더 지원은 파일 시스템(NTFS 또는 ReFS)이나 짧은 경로 이름 지원을 위한 파일 시스템 구성과 무관하게 사용할 수 있습니다.

공백이 포함된 경로의 경우, 빌드 프로세스는 Windows API를 사용하여 Windows 짧은 경로 이름(8.3)을 사용합니다:

getShortPathName()

빌드 프로세스 폴더 지원은 NTFS 파일 시스템에 의존하며, Windows의 기본 지원이 필요합니다. 레지스트리는 다음 항목에 대해 2 또는 0의 값을 설정합니다:

NtfsDisable8dot3NameCreation

제한 사항 다음의 경우 빌드 프로세스에서 해당 폴더 경로에 공백이 포함된 것을 지원하지 않습니다:

  • 짧은 경로 이름 지원이 비활성화된 NTFS 파일 시스템

  • ReFS 파일 시스템 (이 파일 시스템은 짧은 경로 이름을 지원하지 않습니다)

폴더 이름에 공백이 포함된 경우 오류 해결 방법

Windows에서 짧은 파일 이름 지원에 문제가 발생하면 빌드 과정에서 오류가 발생할 수 있습니다. 다음과 같은 오류 메시지가 표시될 수 있습니다:

NMAKE : fatal error U1073: don't know how to make 'C:\Work\My'

폴더 이름(C:\Work\My Models)에 공백이 포함되어 있어 빌드 프로세스가 빌드할 모델이나 파일을 찾지 못할 경우 이 오류가 발생합니다. 폴더 이름이나 경로에 공백이 포함될 경우 문제가 발생할 수 있는 빌드 관련 폴더에 대한 설명은 공백이 포함된 폴더 이름를 참조하십시오.

Windows 짧은 파일 이름 지원이 비활성화되었을 때 폴더 이름의 공백 관련 문제를 방지하려면, 공백이 포함된 폴더 경로를 사용하지 마십시오. 예를 들어:

  • 타사 소프트웨어를 설치하는 폴더의 경우.

  • 모델, 소스 파일 또는 라이브러리가 포함된 폴더의 경우.

빌드 프로세스는 Windows 시스템에서 파일, 폴더 및 경로에 대한 대체 이름 기능을 사용합니다. 대체 이름 지원에 대해서는 여러 가지 용어가 사용됩니다:

  • 8.3 이름

  • DOS 경로

  • 짧은 파일 이름 (SFN, ShortFileName)

  • 긴 이름 별칭

  • Windows 경로 별칭

공백이 포함된 폴더 이름을 사용하는 빌드에서는 Windows 대체 이름 지원 기능을 비활성화할 수 있기 때문에 문제가 발생할 수 있습니다.

드라이브에서 사용하는 파일 시스템의 유형을 확인하십시오. Windows 탐색기에서 드라이브 아이콘을 마우스 오른쪽 버튼으로 클릭한 다음 속성를 선택합니다.

  • 파일 시스템이 ReFS(Resilient File System)인 경우, 해당 파일 시스템은 짧은 파일 이름을 지원하지 않습니다. MATLAB 설치 폴더를 제외하고는, 빌드 과정에서 공백이 포함된 폴더 이름은 지원되지 않습니다. 작업 환경에서 빌드 폴더나 추가적인 외부 코드 폴더에 대해 짧은 파일 이름 지원이 필요한 경우, ReFS를 사용하지 마십시오.

  • 파일 시스템이 NTFS (New Technology File System)인 경우, 빌드 문제는 Windows 레지스트리 설정과의 비호환성과 관련이 있을 수 있습니다.

파일, 폴더 및 경로의 짧은 이름을 생성할 수 있도록 하는 Windows 레지스트리 설정을 관리하려면:

  1. Windows 명령 프롬프트를 관리자 권한으로 실행하십시오. 예를 들어, Windows 시작 메뉴에서 cmd를 입력한 다음, cmd.exe 아이콘을 마우스 오른쪽 버튼으로 클릭하고 Run as administrator를 선택합니다.

  2. Windows\System32 폴더로 이동한 다음, 다음 명령을 입력하여 NtfsDisable8dot3NameCreation의 상태를 쿼리하십시오.

    fsutil 8dot3name query

    레지스트리 상태는 다음 값 중 하나를 가질 수 있습니다.

    • 0 — 시스템의 모든 볼륨에 대해 8dot3 이름 생성이 활성화됨

    • 1 — 시스템의 모든 볼륨에 대해 8dot3 이름 생성이 비활성화됨

    • 2 — 볼륨별로 8dot3 이름 생성을 설정할 수 있음

    • 3 — 시스템 볼륨을 제외한 모든 볼륨에 대해 8dot3 이름 생성이 비활성화됨

  3. NtfsDisable8dot3NameCreation의 레지스트리 상태가 2라고 가정합시다. 다음 명령을 입력하면 특정 드라이브(예: D)에 대해 8dot3 이름 생성을 활성화할 수 있습니다:

    fsutil 8dot3name set D: 0

    그런 다음 컴퓨터를 재부팅하십시오. 레지스트리 설정을 변경하면, 변경 이후에 생성되는 파일과 폴더에 대해서만 짧은 이름이 생성됩니다.

    짧은 이름 생성을 활성화하는 방법에 대한 자세한 내용은 https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-8dot3name를 참조하십시오.

이전에는 짧은 이름 생성이 비활성화된 상태에서 생성된 파일의 짧은 이름을 만들려면 다음 명령을 사용하십시오:

fsutil file setshortname fileName shortName

예를 들어, 긴 이름 C:\Program Files에 대한 짧은 이름 PROGRA~1를 만들려면 다음을 입력하세요:

fsutil file setshortname "C:\Program Files" PROGRA~1

C:\Program Files 폴더 이름은 공백이 포함되어 있기 때문에 따옴표로 묶여 있습니다.

짧은 이름이 생성되었는지 확인하려면, dir 명령에 /x 옵션을 지정하여 짧은 이름을 표시하십시오.

dir C:\ /x

특수 문자가 포함된 폴더 이름

빌드 관련 폴더 경로에 다음이 포함되어 있는 경우 빌드 과정에서 오류가 발생할 수 있습니다:

  • 시스템 로케일에 속하지 않는 Unicode® 문자. 빌드 프로세스에서 Microsoft® Visual C++® 컴파일러를 사용하는 경우에는 이 제한 사항이 적용되지 않습니다.

  • 마지막 바이트가 16진수 5C와 동일한 일본어(멀티바이트) 문자. make 및 컴파일러 툴이 마지막 바이트를 '\' (백슬래시) 문자로 잘못 해석할 수 있습니다.

  • 다음 문자 중 하나 이상:

    • '&' (앰퍼샌드)

    • ':' (콜론)

    • ';' (세미콜론)

    • '$' (달러 기호)

    • '(' (왼쪽 괄호)

    • ')' (오른쪽 괄호)

    • '^' (서큘렘스 악센트)

매우 긴 폴더 경로

MinGW® 컴파일러의 경우, 명령줄 길이가 Windows의 제한인 32,767자를 초과하면 빌드 과정에서 오류가 발생합니다. 이 오류가 발생하면 포함 경로의 길이를 확인하십시오. 이름이 더 짧은 코드 생성 폴더에서 생성된 코드를 빌드하면 명령줄 길이를 줄일 수 있습니다.

참고 항목

도움말 항목

외부 웹사이트