본문 바로가기
패스트캠퍼스 챌린지(C++ 올인원)

패스트캠퍼스 챌린지 1일차

by 승욱은 2021. 11. 1.

오늘, 패스트캠퍼스에서 갓생살기 환급챌린지가 시작됐다. 파이썬으로 어느 정도 백준에서 한계가 있다는 걸 느꼈기에, C++을 공부해보고자 했는데 좋은 기회라 생각되어 신청했다.

 

일단 첫날은 역시 개발환경부터 설치하기이다. 강의에서는 Visual Studio를 이용한다고 했지만 기존 Visual Studio Code를 떠나고 싶지 않았던 나는 VSC에서 개발환경을 꾸려보고자 했다. (이것이 지옥의 시작이었다.)

 

우선 C++ 컴파일러부터 설치해야했는데 이거부터 방법이 너무 다양했다. VSC에서 권장하는 방법으로 해보다가 기존 파이썬이랑 경로가 충돌하면서 파이썬 디버깅 설정들이 먹통이 됐었다... 이런저런 설정을 만져보길 6시간.. 겨우겨우 해내었다. 그중 라즈이노IOT님의 유튜브 채널과 StackOverFlow의 한 게시글이 도움이 많이 되었다. 

 

강의의 전체적인 흐름은 게임개발에 있지만 개인적으로 C++을 배우는 이유는 역시나 PS다. (시간 초과.. 메모리 초과..) 매번 Input을 입력하는 게 사실 매우 매우 매우 귀찮았었기 때문에 launch.json파일을 수정해서 Input을 텍스트로 받고 하는 김에 output도 텍스트로 나오게 하고 있었다. 파이썬은 수정이 꽤나 간편했는데 C++은 아니더라...

 

task.json 수정부터 난관이었다. C++은 g++로 컴파일해야 다양한 라이브러리를 받을 수 있다는 걸 알고나서야 컴파일이 됐었다.. 그리고 args항목에 Input과 output을 추가해줬는데 이걸 작동시키는데도 꽤나 오래 걸렸다. 

 

{
    "version": "2.0.0",
    "runner": "terminal",
    "type": "shell",
    "echoCommand": true,
    "presentation": {
        "reveal": "always"
    },
    "tasks": [
        {
            "label": "save and compile for C++",
            "command": "g++",
            "args": [
                "${file}",
                "-g",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "save and compile for C",
            "command": "gcc",
            "args": [
                "${file}",
                "-g",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C",
                "${fileDirname}\\${fileBasenameNoExtension}"
            ]
        },
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 활성 파일 빌드",
            "command": "C:\\MinGW\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.out",
                "&&",
                "${fileDirname}\\${fileBasenameNoExtension}.out",
                "<",
                "${workspaceFolder}\\input.txt",
                ">",
                "${workspaceFolder}\\output.txt"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "디버거에서 생성된 작업입니다."
        }
    ]
}

이렇게 해야 input.txt가 들어가고 ouput.txt가 나왔다. 

그리고 항상 디버깅을 자주 이용하기 때문에 빌드가 아니라 디버깅할때도 input, output이 나오게 설정을 해주었다.

{
    // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
    // 기존 특성에 대한 설명을 보려면 가리킵니다.
    // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 활성 파일 빌드 및 디버그",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.out",
            "args": [
                "<",
                "${workspaceFolder}\\input.txt",
                ">",
                "${workspaceFolder}\\output.txt"
            ],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "gdb에 자동 서식 지정 사용",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe 활성 파일 빌드"
        }
    ]
}

preLaunchTask 부분을 빌드에서 가져와서야 비로소 output이 나왔다.

아직 PS를 할정도로 C++을 잘 다루지는 않았기에 아직까지 어떤 에러가 더 나올지는 추후에 포스팅해보겠다..

개발환경을 설정하는데만 하루를 날렸다.. 조금 슬픈 하루다..ㅠ 

개발환경 설정하고 강의 듣는 모습

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

패스트캠퍼스 : https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #C++실력완성올인원패키지

댓글