계기
network 성능 측정 시뮬레이터를 개발하면서 Windows, Linux 환경에서 동시에 동작 가능한 코어 프로그램이 필요해서
사용한 것
- visual studio 2022 (디버깅)
- visual studio code (전체 프로젝트 확인)
- CMake GUI (CMakeLists.txt 검증)
프로젝트 구조
- Server
CMakeLists.txt
CMakePresets.json
- Client
CMakeLists.txt
CMakePresets.json
- CommonLib(static library, example binary)
CMakeLists.txt
CMakePresets.json
개발 내용
- Visual studio 2022로 CMake 프로젝트를 생성하자
- client, server, commonLib 각각 프로젝트를 생성
- 하나의 CMakeLists.txt에서 관리하려고 했으나 Visual studio 2022로 디버깅을 하면서 진행하려고 하니 복잡해져서 각각의 프로젝트로 나누어서 관리
- static library를 생성하고 example 프로그램으로 테스트 해보자
- Server와 Client에서 라이브러리를 링크하고 테스트 진행 후 개발 시작
느낀점
Visual Studio로 사용하여 크로스 플랫폼 작성시 CMakePresets.json에 설정된 os환경에 따라 intelisense가 변하므로 작업하기가 수월하다.
다만, CMakePresets.json에 여러 옵션이 많은 것 같은데 CMake에서 제공하는 옵션이랑 Visual Studio에서 사용하는 옵션에 차이가 있는 것 같다.
헷갈리는 점
- 라이브러리 링크스 inteli sense가 CMakePresets.json의 ADDITIONAL_INCLUDE_DIR의 위치에 따라 적용되는건지
- 각 프로젝트의 CMakeLists.txt의 target_link_libraries를 기준으로 되는건지 애매함.
- 근데 아마 후자일 가능성이 높다.