버그 해결을 위한 모든 질문을 던져
0 votes
187 views
리눅스를 배워볼 겸 c++을 사용하여 리눅스 서버 제작을 구상하고 있는데요.

 

현재 리눅스용으로 자동 생성된 프로젝트에서 프로젝트 구성을 수정하여 윈도우 빌드, 리눅스 빌드를 구분하여 사용하려고 하는데, 프로젝트 구성 요소에 대한 지식도 부족하고 기존 윈도우 프로젝트 구성 요소와 비교하여 봐도 답이 안나와서 질문드립니다.

 

비주얼 스튜디오에서 서로 다른 OS 용 빌드를 하나의 프로젝트에서 구성 요소로 구분하여 사용하는 것을 본 경험이 있어서 Windows 빌드와 Linux 빌드를 하나의 프로젝트에서 빌드가 가능할꺼라 생각되는데, 이 구성을 세팅하는 방법이나 도움이 될만한 정보가 있을까요?

 

개발환경은 Visual Studio 2019, Linux Ubuntu 19.04, Windows 10 입니다.
asked (3 point) , 187 views

1 답변

+1 vote

저와 같은 고민을 하셨던 분이 계시는군요... 반갑습니다!

이것저것 끄적여보고 뜯어본 결과,

결론부터 말씀드리면 [프로젝트 하나에서 빌드 구성을 변경하여 리눅스와 윈도우 빌드를 둘 다 하는것은 불가능 하다] 입니다.

[주) CMake 프로젝트는 해보지 않아서 잘 모르겠어서(...) 일반 Linux 프로젝트 기준입니다]

클릭시 이미지 새창.

 

위와 같이 윈도우와 리눅스 프로젝트 구성하는 부분이 저 부분으로 윈도우냐 리눅스냐 구분이 되어지는 관계로...

 

그 외에 프로젝트 관리를 좀 편하게 하는 방법에 대해서 제가 사용하는 방법에 대해 소개해드리자면

1. Windows던 Linux던 메인이 되는 프로젝트가 존재하고 있을 때, 솔루션에서 다른 한 쪽 OS의 프로젝트를 생성한다.

[이하 설명은  메인 프로젝트 Windows (CPP), 추가할 것을 Linux (CPP_Linux) 고 설명하겠습니다]

 

2. 생성된 CPP_Linux프로젝트를 솔루션에서 제거한다. (파일은 유지되는 상태)

 

3. CPP_Linux.vcxproj, CPP_Linux.vcxproj.filters 파일을 Windows용 프로젝트 폴더인 CPP 폴더로 복사하고, 기존 CPP_Linux 폴더는 통쨰로 지워준다.

(SVN 등에 Add가 되어있다면 undo Add 처리 후 삭제...)

 

4. 텍스트 편집기로 다음 4개의 파일을 연다.

- CPP.vcxproj

- CPP.vcxproj.filters

- CPP_Linux.vcxproj

- CPP_Linux.vcxproj.filters

 

5. 다음 그림과 같이 원본 프로젝트에서 타겟 프로젝트로 네모친 영역을 복사하여 알맞게 붙여넣어준다.

클릭시 이미지 새창.

 

6. 모두 저장 후,  솔루션 파일을 열어서 새로 만든 CPP_Linux 프로젝트를 추가 (기존 프로젝트 추가) 하여 솔루션을 저장한다.

(리눅스 프로젝트 플랫폼별 빌드 타겟은 이 때 적절히 해줌)

--------------------------------------------------------------------------

 

이렇게 해주면 하나의 솔루션 전체빌드로 한 소스 파일들로 리눅스, 윈도우 두개 빌드를 실행할 수 있습니다.

소소한 단점이라면, 파일을 추가할 때, 한쪽에서 추가를 하고 난 뒤 다른 프로젝트 쪽에도 파일 추가(기존 파일 추가) 로 등록해줘야 한다는 약간의 귀찮음이....

 

 

 

 

 

answered (273 point)
수정됨
안녕하세요. 답변 감사드립니다.

 

위에서 말씀하신 단점(양쪽 프로젝트에 동일하게 추가해야하는 부분)으로 인해 동일 프로젝트에서 구분을 하는 방향으로 생각을 했었습니다만... 아직까지는 불가능한 것으로 보면 되는군요...

 

우선 프로젝트를 분리해서 제작을 하는 방향으로 진행하면서 차후 개선하여 진행해야할 듯 합니다.

 

다시 한번 더 답변 감사드립니다!

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

239 질문
367 answers
376 댓글
470 users