작은 걸음 VIII — 여러 파일로 프로그램 만들기
프로젝트와 완성한 프로그램 공유하기
편집할 프로젝트와 실행할 배포본을 구분합니다.
친구는 실행할까요, 함께 고칠까요?
같은 프로젝트라도 목적에 따라 보내는 것이 다릅니다. 앞에서 만든 ScoreCard로 확인해 보세요.
아래는 점수 프로그램의 한 파일 연습 버전입니다. 실제 프로젝트에는 앞 수업의 세 파일을 그대로 사용하세요.
int add_points(int score, int points)
{
return score + points;
}
void small_main()
{
int score = 0;
score = add_points(score, 10);
score = add_points(score, 20);
print(score);
}
실행할 프로그램 보내기
콘솔 창이 바로 닫히지 않도록 main.cpp에서 print(score); 다음에 input();을 넣고 저장하세요.
File → Publish Project…를 선택하고 새 배포 폴더를 지정하세요. 프로젝트에 포함된 소스 파일을 모두 컴파일해 하나의 exe를 만듭니다. 선택된 탭이 score.h여도 같은 프로그램이 만들어집니다.
완성된 폴더의 exe를 실행해 30이 나오는지 확인하세요. DLL, 플러그인, licenses 등 생성된 파일을 함께 ZIP으로 보내세요. 받는 사람은 Windows x64에서 압축을 풀고 exe를 실행합니다. Small C++ 설치는 필요 없습니다. 자세한 방법은 작은 걸음 VII에서 배웠습니다.
Publish는 원본 .cpp와 .h, small.project를 자동으로 넣지 않습니다. 실행에 필요한 이미지나 소리 등만 선택해 함께 넣을 수 있습니다.
함께 편집할 프로젝트 보내기
코드를 함께 고치려면 저장한 원래 프로젝트 폴더 전체를 ZIP으로 보내세요. 프로젝트 이름을 우클릭하고 Show Project in File Explorer를 선택하면 그 폴더를 찾을 수 있습니다. .cpp, .h, 필요한 자료와 small.project가 있다면 함께 넣습니다. 친구는 압축을 풀고 Small C++에서 Open Project (Folder)… → Open This Folder로 엽니다. 내 컴퓨터의 절대 경로는 프로그램에 넣지 않는 것이 좋습니다.
폴더 이름이 프로젝트 이름입니다. 복사본을 만들고 다른 이름으로 바꿔도 사용할 수 있습니다.
더 알아보기 — 하위 폴더
하위 폴더의 소스도 자동으로 포함됩니다. 파일 목록의 빈 공간을 우클릭하고 New Folder…로 폴더를 만들 수 있습니다. 빈 폴더도 목록에 표시되고 생성 직후 선택됩니다. 폴더를 우클릭해 New Source File… 또는 New Header File…을 선택하면 그 안에 생성됩니다. 파일을 우클릭하면 같은 폴더, 빈 공간이나 상단 New에서는 프로젝트 루트에 파일이 생성됩니다. New Folder도 폴더를 우클릭하면 그 안에, 파일을 우클릭하면 같은 위치에 폴더를 만듭니다. 처음에는 한 폴더만으로 충분합니다.
연습 — 직접 확인하기
한 파일 연습과 프로젝트의 main.cpp에서 5점을 더해 35가 나오게 하세요. 수정한 프로젝트를 Publish해 배포본을 확인하고, 원래 프로젝트의 ZIP도 별도로 만들어 다른 위치에서 다시 열어 보세요.
int add_points(int score, int points)
{
return score + points;
}
void small_main()
{
int score = 0;
score = add_points(score, 10);
score = add_points(score, 20);
print(score);
}
Hint
위에서 설명한 메뉴를 이용하세요. 아래 코드는 한 파일 연습의 답안입니다. 프로젝트에서는 해당 역할의 파일에 같은 변경을 적용하세요.
풀이 보기
int add_points(int score, int points)
{
return score + points;
}
void small_main()
{
int score = 0;
score = add_points(score, 10);
score = add_points(score, 20);
score = add_points(score, 5);
print(score);
}