이 페이지에서

개발용 컨테이너 사용

개발 컨테이너(dev container)를 사용하여 개발자 간 및 자동화된 빌드 또는 테스트 시스템 전반에 걸쳐 프로젝트에 대한 일관된 개발 환경을 정의하고 구성할 수 있습니다.

개발 컨테이너는 로컬 또는 클라우드에서 원격으로 실행하여 애플리케이션을 실행하거나, 코드베이스 작업 시 필요한 도구, 라이브러리 또는 런타임을 분리하거나, 지속적인 통합 및 테스트를 수행할 수 있습니다.

개발 컨테이너 환경은 최종 배포에는 필요하지 않은 개발 과정에서 필요한 도구와 유틸리티를 포함하는 경우가 많기 때문에 배포 환경과 다를 수 있습니다.

전체 사양 및 ` devcontainer.json ` 파일 형식에 대한 내용은 개발 컨테이너 문서를 참조하십시오.

참고: 이 기능을 사용하려면 개발 컨테이너 지원 플러그인을활성화해야 합니다.

개발용 컨테이너 구성

Qt Creator 용 개발 컨테이너를 구성하려면:

  1. 프로젝트 디렉터리에 ` devcontainer.json ` 파일을 생성합니다.
  2. devcontainer.json 파일의 ` customizations ` 아래에 ` qt-creator ` 섹션을 추가합니다.
  3. 이 항목에 설명된 사용자 정의 옵션을 사용하여 개발용 컨테이너를 구성하십시오.

개발용 컨테이너 사용자 지정 옵션

다음 표는 devcontainer.json 파일에서 Qt Creator 을 사용자 정의하는 데 사용할 수 있는 옵션을 보여줍니다.

속성유형설명
auto-detect-kitsbooleantrue 로 설정하면 개발용 컨테이너에서 키트를 자동으로 감지하려고 시도합니다.
run-processes-in-terminalbooleantrue 로 설정하면 터미널 창에서 개발용 컨테이너 설정 프로세스 중 일부를 실행합니다. 현재는 docker build 에서만 사용됩니다.
copy-cmd-bridgebooleantrue 로 설정하면 원격 장치와 통신하는 서비스인 Command Bridge Helper를 마운트하려고 시도하는 대신 개발 컨테이너로 복사합니다. 이는 개발 컨테이너가 호스트 파일 시스템을 마운트할 수 없는 경우에 유용합니다.
mount-libexecbooleantrue 로 설정하면 libexec 디렉터리를 개발용 컨테이너에 마운트합니다. 이는 Command Bridge Helper에 사용됩니다.
libexec-mount-pointstringdev 컨테이너 내의 libexec 디렉터리에 대한 마운트 지점을 지정합니다. 이는 Command Bridge Helper에 사용됩니다.
kits객체 배열dev 컨테이너에서 사용할 사용자 정의 키트를 지정합니다.

일반적인 로컬 개발 환경 구성

다음 예제 devcontainer.json 파일은 일반적인 로컬 개발 워크플로우에 맞게 dev 컨테이너를 구성하는 방법을 보여줍니다. 이 설정은 키트를 자동으로 감지하고, libexec 디렉터리를 컨테이너에 마운트하며, 마운트 지점을 지정합니다.

이 설정은 ` Qt Creator `가 사용 가능한 빌드 키트를 자동으로 찾고, ` libexec ` 디렉터리의 필수 헬퍼 도구를 컨테이너 내에서 사용할 수 있도록 보장하고자 할 때 유용합니다.

{
    "customizations": {
        "qt-creator": {
            "device": {
                "auto-detect-kits": true,
                "run-processes-in-terminal": false,
                "copy-cmd-bridge": false,
                "mount-libexec": true,
                "libexec-mount-point": "/devcontainer/libexec"
            }
        }
    }
}

사용자 정의 키트 및 툴체인 구성

다음의 예제 devcontainer.json 파일은 컨테이너 내에서 특정 Qt 버전, 컴파일러 또는 툴체인을 사용해야 할 때 개발용 컨테이너를 구성하는 방법을 보여줍니다. 이는 크로스 컴파일, 여러 빌드 구성 지원 또는 팀 간 일관된 개발 환경 확보에 유용합니다.

이 구성 파일은 자동 키트 감지를 비활성화하고, 대신 kits 속성을 사용하여 사용자 정의 키트를 정의합니다. 이 키트는 개발 컨테이너 내에서 Qt Creator 가 사용할 Qt 버전, 컴파일러 경로, CMake 바이너리 및 생성기, 디버거를 지정합니다.

또한 이 구성 파일은 선택적 ` cmake.variables ` 속성을 사용하여, ` Qt Creator `가 프로젝트를 구성할 때 임의의 CMake 변수를 전달합니다. 각 키는 CMake 변수 이름이며, 값은 다음과 같을 수 있습니다:

  • 일반 문자열
  • 문자열 배열( ; 를 통해 단일 CMake 리스트 값으로 결합됨)
  • value 필드와 선택적 type 필드(BOOL, STRING, FILEPATH, PATH, STATIC 또는 INTERNAL)를 가진 객체. 이 유형은 CMake 명령줄에 -DVAR_NAME:TYPE=value 형식으로 추가됩니다.
{
    "customizations": {
        "qt-creator": {
            "auto-detect-kits": false,
            "kits": [
                {
                    "name": "My DevContainer Kit",
                    "qt": "/6.7.0/gcc_64/bin/qmake6",
                    "compiler": {
                        "Cxx": "/usr/bin/c++",
                        "C": "/usr/bin/gcc"
                    },
                    "cmake": {
                        "binary": "/usr/bin/cmake",
                        "generator": "Unix Makefiles",
                        "variables": {
                            "CMAKE_BUILD_TYPE": "Release",
                            "CMAKE_PREFIX_PATH": ["/opt/qt", "/usr/local"],
                            "BUILD_TESTING": {
                                "type": "BOOL",
                                "value": "OFF"
                            }
                        }
                    },
                    "debugger": "/usr/bin/lldb"
                }
            ]
        }
    }
}

‘플러그인 활성화 및 비활성화 ’ 및 ‘Docker용 개발 방법’도 참조하십시오 .

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.