TIL

[TIL] Visual Studio C++ 프로젝트 및 폴더 관리 마스터하기 (필터, OneDrive 충돌, 빌드 제외)

think95592 2026. 5. 22. 20:16

 

C++로 콘솔 RPG 토이 프로젝트를 진행하면서, 소스 코드 로직 외에 Visual Studio 환경 설정과 프로젝트 관리 때문에 예상치 못한 삽질을 했다. 오늘 겪은 시행착오와 해결 방법을 잊지 않도록 상세히 기록해 둔다.

1. 윈도우 실제 폴더 vs Visual Studio '필터'의 차이

C++ 프로젝트 파일이 많아져서 윈도우 탐색기에서 Entity, Player 같은 폴더를 만들고 파일들을 정리했다. 그런데 Visual Studio를 켜니 파일들을 찾지 못해 빌드 에러가 발생했다. 알고 보니 실제 폴더와 IDE 내부의 필터는 완전히 다른 개념이었다.

  • 실제 폴더 (윈도우 탐색기): 하드디스크에 실제로 존재하는 물리적인 파일 경로. 파일 위치를 옮기면 실제 경로가 바뀐다.
  • 필터 (Visual Studio 솔루션 탐색기): 가상의 폴더. 파일의 물리적 위치는 바꾸지 않고, IDE 내부에서 보기 좋게 분류만 해두는 '가짜 폴더(태그)' 개념이다.

💡 해결책: '모든 파일 표시' 기능으로 동기화하기

윈도우 탐색기의 실제 물리 구조를 Visual Studio에 그대로 반영하는 가장 깔끔한 방법은 다음과 같다.

  1. 솔루션 탐색기 상단의 [모든 파일 표시] 아이콘을 클릭한다.
  2. 윈도우 탐색기에서 새로 만든 실제 폴더들이 솔루션 탐색기에 나타나면, 해당 폴더를 우클릭하고 [프로젝트에 포함(Include In Project)]을 선택한다.

2. OneDrive(원드라이브) 경로에서의 IntelliSense 오류

프로젝트 폴더를 바탕화면(OneDrive/Desktop/...)에 두고 작업하다가 갑자기 Visual Studio에서 다음과 같은 경고창이 떴다.

"The browsing database in this directory is open by another instance of Visual Studio and cannot be reopened..."

🔍 원인 분석

Visual Studio는 코드 자동 완성 및 탐색(IntelliSense)을 위해 .vs라는 숨김 폴더 안에 실시간으로 대용량 데이터베이스 파일(.db)을 쓰고 지운다. 하지만 프로젝트가 바탕화면이나 문서 등 OneDrive 실시간 동기화 경로에 있으면, 원드라이브가 이 파일을 실시간으로 서버에 업로드하려고 프로세스를 잠가버린다(Locking). 이 때문에 Visual Studio는 다른 프로그램이 자기 파일을 쓰고 있는 줄 착각하고 에러를 뿜는 것이었다.

🛠️ 해결책: 순수 로컬 폴더로 이전

원드라이브의 간섭을 받지 않는 순수 로컬 디렉터리로 프로젝트를 통째로 이동시켜야 정신 건강에 좋다.

  • 추천 경로: C:\Source 또는 C:\Users\사용자이름\Projects
  • 추가 팁: 폴더를 옮긴 후에는 기존에 꼬여있던 임시 파일인 .vs 폴더와 out, x64 같은 빌드 찌꺼기 폴더를 수동으로 한 번 삭제해 준 뒤 솔루션 파일(.sln)을 열면 아주 쾌적하게 작동한다.

3. 팀 협업 중 특정 파일만 제외하고 내 파일만 실행하기

팀 프로젝트를 하거나 다른 사람의 테스트용 소스 코드를 내 프로젝트 폴더 안에 넣어두었을 때, main() 함수가 여러 개 겹치거나 타인 코드의 에러 때문에 내 코드가 빌드가 안 되는 상황이 발생했다. C++ 프로젝트는 실행할 때 무조건 단 하나의 시작 지점(main 함수)만 가져야 한다.

이때 파일을 삭제하지 않고 내 파일만 깔끔하게 실행하는 꿀팁을 배웠다.

🛠️ 해결책: 빌드에서 제외(Exclude From Build) 기능 활용

  1. 실행에서 제외하고 싶은 다른 사람의 *.cpp 파일을 솔루션 탐색기에서 선택한다.
  2. 해당 파일을 우클릭하고 [속성(Properties)]에 들어간다.
  3. [구성 속성(Configuration Properties)] ➡️ [일반(General)] ➡️ [빌드에서 제외(Exclude From Build)] 항목의 값을 [예(Yes)]로 변경한다.

이렇게 설정하면 솔루션 탐색기에는 파일이 그대로 안전하게 남아있지만, 컴파일러는 이 파일을 '없는 파일' 취급하므로 메인 함수 충돌 없이 내 코드만 깔끔하게 빌드해서 테스트할 수 있다. 작업이 끝나고 다시 켜고 싶을 때는 아니요(No)로 바꿔주면 된다.

📝 오늘 레슨런 (Lesson Learned)

  • C++ 개발을 할 때 원드라이브 경로는 빌드 오류와 인텔리센스 먹통의 주범이므로 절대 피하자.
  • 하드디스크의 물리 구조와 IDE의 가상 구조(필터) 차이를 명확히 이해했으니, 앞으로 프로젝트 아키텍처를 짤 때 모든 파일 표시를 기본으로 켜두고 동기화하는 버릇을 들여야겠다.
  • 파일을 무작정 지우거나 주석 처리하지 않고도 빌드에서 제외 기능을 통해 안전하게 멀티 파일 관리를 할 수 있게 되었다.