소프트웨어 개발/Rust

[프로그래밍 언어][Rust] 4. Mac에서 Rust 개발 환경 구축하는 방법(Visual Studio Code에서 Rust 환경 설정)

산삼인생 2023. 1. 5. 19:04
728x90
제가 사용하고 있는 맥 사양입니다.
macOS Monterey v12.5
MacBook Pro(13형, M2, 2022년)
칩 Apple M2
메모리 24 GB

 

지난번 시간에서는 Mac에서 Rust 프로그래밍 언어를 배우기 위한 개발 환경 구축을 위해서

Rustc, Cargo를 설치완료하였습니다.

이제는 코딩을 위해서 IDE(통합개발환경)를 설치하고

Rust 컴파일과 실행을 같이 해보도록 하겠습니다.

 

IDE는 Visual Studio Code를 추천합니다.

가볍고, 빠르고, 편리하며, 플러그인이 많습니다.

현재 기준으로 가장 많이 사용하는 IDE입니다.

 

Visual Studio Code 공식 홈페이지 : https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

Mac용으로 다운로드 합니다.

다운로드를 하고 압축을 풀고나서 바로 응용프로그램을 실행하면 됩니다.

오른쪽 하단에 한국어 언어팩도 설치 안내 팝업창이 출력됩니다.

'설치 및 다시 시작' 버튼을 클릭해서 한국어로 실행하겠습니다.

여기까지 Visual Studio Code IDE 설치가 완료되었습니다.

이제 간단한 프로그램을 출력해보는 예제를 실행해보도록 하겠습니다.

왼쪽에서 '폴더 열기' 버튼을 클릭합니다.

 

적당한 폴더 선택해줍니다.

처음이기 때문에

적당한 위치에 폴더를 생성해주고 열기를 합니다

저는 데스크탑에 'Rust'폴더를 생성해서 열기를 하겠습니다.

폴더 경로는 '/Users/sansamlife/Desktop/Rust' 입니다.

파일의 작성자 신뢰에 대한 여부를 선택하는 팝업창이 출력됩니다.

'예, 작성자를 신뢰합니다.' 를 선택합니다.

Rust 예제를 작성하기 위해서 '새파일'을 선택합니다.

파일명은 'helloworld.rs'를 만들겠습니다.

Rust는 파일 확장자가 'rs'입니다.

파일이 생성되었습니다.

아래의 예제를 입력하도록 하겠습니다.

fn main() {
    println!("Hello, world!");
}

 

왼쪽에 '실행 및 디버그' 버튼을 클릭합니다.

 

아래와 같이 에러창이 출력이 됩니다.

Rustc 컴파일러와 디버깅에 대한 확장 플러그인을 설치하도록 하겠습니다.

'Rust 확장 찾기' 버튼을 클릭합니다.

왼쪽에 많은 Rust 관련 플러그인을 볼수가 있습니다.

 

CodeLLDB를 선택해서 '설치'를 하겠습니다.

인터넷을 검색해보니 Apple Mac M1, M2 프로세스의 경우에는 CodeLLDB를 추천을 하고 있습니다.

'Rust'로 검색을 하면 'rust-analyzer' 가 검색되는데 같이 설치하겠습니다.

 

설치후에 다시 '실행 및 디버거'를 실행하면

'Cannot start debugging because no launch configuration has been provided.'

Visual Studio Code에서 기본적으로 제공하는 Debug가 계속 에러가 발생합니다.

인터넷을 검색해보니까 Debug가 에러가 발생하고 버그라서 해결이 안되었다고 하는 내용도 있네요

디버깅을 위한 시작 환경이 제공되지 않아서 디버깅을 시작할 수 없다는 에러창이 출력됩니다.

그리고 launch.json파일이 생성이 되고

하단에 '구성 추가' 버튼이 생성이 됩니다.

그래도 에러가 발생하는가요?

환경변수 설정을 아래와 같이 해주도록 하겠습니다.

vi ~/.zshrc


# Add Visual Studio Code (code)
export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"

 

여기까지 실수한것이 있었습니다.

Rust의 경우에는 Cargo 명령어를 통해서 프로젝트를 생성을 해야 합니다.

이제서야 알게되다니...

Cargo는 Rust의 프로젝트 관리, 빌드 시스템, 패키지 관리자 입니다.

Cargo를 통해서 프로젝트 생성 및 관리를 해줍니다.

Cargo를 통해서 코드 빌드, 코드 내에 의존하는 라이브러리 다운로드, 해당 라이브러리 빌드와 같은 작업을 처리하고 있습니다.

맥에서 터미널 프로그램을 실행하고

적당한 폴더를 선택해서 다음의 명령어를 실행합니다.

cargo new helloworld

 

 

helloworld폴더가 생성하면서

폴더에 이동해서 파일을 살펴보면

2개의 파일이 생성이 된 것을 확인할 수 있습니다.

Cargo.toml

src/main.rs

터미널 프로그램에서 'code .'을 실행하면 Visual Studio Code가 실행합니다.

code .

또는 응용프로그램에서 Visual Studio Code를 실행해도 됩니다.

실행을 하면 helloworld 폴더가 자동으로 열리고

뭔가가 실행이 되는걸 확인할 수 있습니다.

그리고는 target 폴더가 생성됩니다.

왼쪽 탐색기에서 src/main.rs 파일을 클릭하면

오른쪽에 기본으로 생성된 코드를 볼 수 있습니다.

소스코드 첫라인 위에 작은 글씨로 'Run | Debug'가 보입니다.

 

'Run'을 클릭하면 하단에 터미널 탭이 생성이 되고, 실행이 되는걸 확인할 수 있습니다.

'Hello, world!'를 출력해주는 예제 프로그램입니다.

 

'Run' 옆에 있는 'Debug'를 선택해보겠습니다.

Visual Studio Code 하단에 '디버그 콘솔' 탭이 생성되면서 실행이 되는것을 확인할 수 있습니다.

좌측에 '실행 및 디버그' 버튼이 출력되는데,

'실행 및 디버그' 버튼을 클릭해보겠습니다.

 

역시나 다음의 에러가 발생합니다

Cannot start debugging because no launch configuration has been provided.

디버그를 실행하기 위해서는 환경 설정을 해줘야 하는것 같습니다.

'확인' 버튼을 클릭하면 또다른 팝업창이 활성화됩니다.

Cargo.toml has been detected in this workspace.

Would you like to generate launch configurations for its targets?

'Yes'버튼을 클릭하겠습니다.

helloworld 프로젝트 안에 .vscode/launch.json

파일에 구성이 추가 보완이 되는것을 확인할 수 있습니다.

{
    // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
    // 기존 특성에 대한 설명을 보려면 가리킵니다.
    // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug executable 'helloworld'",
            "cargo": {
                "args": [
                    "build",
                    "--bin=helloworld",
                    "--package=helloworld"
                ],
                "filter": {
                    "name": "helloworld",
                    "kind": "bin"
                }
            },
            "args": [],
            "cwd": "${workspaceFolder}"
        },
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug unit tests in executable 'helloworld'",
            "cargo": {
                "args": [
                    "test",
                    "--no-run",
                    "--bin=helloworld",
                    "--package=helloworld"
                ],
                "filter": {
                    "name": "helloworld",
                    "kind": "bin"
                }
            },
            "args": [],
            "cwd": "${workspaceFolder}"
        }
    ]
}

디버그 환경구성이 제대로 갖춰진것 같습니다.

왼쪽 실행 및 디버그 버튼을 클릭하면

상단에 'Debug executable 'helloworld'라고 보이고 

클릭해서 실행하면 정상동작하는것을 확인할 수 있습니다.

메뉴 '실행-디버깅 시작' 을 클릭해도 정상 동작을 합니다.

많은 우여곡절 끝에 마침내 디버깅까지 성공을 하였습니다.