CMake 6

Windows 한글 계정명에서 발생하는 CMake 빌드 에러 원인과 해결 방법

들어가며최근 CMake를 C++ 프로젝트를 빌드하면서 특정 Windows PC에서만 빌드 에러가 발생하는 흥미로운 버그를 만났다.향후 비슷한 문제를 마주했을 때 빠르게 원인을 파악하고 대처할 수 있도록,이번 트러블 슈팅 과정에서 배운 버그 발생 원인과 해결방법을 정리해 보려 한다.문제 상황이 빌드 에러는 다음과 같은 특정 환경에서만 발생했다.OS: WindosWindows 사용자 계정: 한글 이름 사용 (예: C:\Users\전인학\...)OS 설정: "시간 및 언어 > 언어 및 지역 > Beta: ...Unicode UTF-8" 옵션이 꺼져 있는 상태원인 분석: 빌드 도구 간의 인코딩 불일치사용자 계정명이 한글일 때 오류가 발생하는 원인을 조사해 보니,빌드 파이프라인에 동원되는 각 도구별로 사용하는 인..

개발 2026.03.31

CI 입문 ㅡ Jenkins로 C++ 빌드·유닛 테스트 자동화 따라하기

들어가며최근 빌드 환경 구성이 잦아지면서 적지 않은 스트레스를 겪고 있다. 현재 진행 중인 프로젝트는 VirtualBox로 각자 빌드 환경을 구성하고,PowerShell 스크립트를 이용해 Windows, Linux, Embedded Linux 빌드를 각각 수행한다. 오래전부터 많이 사용해 온 방식이고, 간단하다는 장점도 있지만환경이 늘어날수록 관리 부담이 커지는 한계도 느끼게 됐다. 더 나은 방법이 없을까 고민하던 중,예전부터 막연히 갖고 있던 빌드 자동화와 Unit Test 자동화에 대한 욕심이 생겼다. 이 글은 Jenkins를 이용한 자동화 환경을 직접 구성해 보기 위해 정리한 기록이다.gtest + MinGW + Jenkins 조합으로 최소 단위의 자동화를 실험해 보았다.Jenkins 선택 이유여러..

개발 2026.01.21

시스템 시간 변경 후 빌드가 깨진 이유 ㅡ 증분 빌드와 타임스탬프 문제

들어가며시스템 시간을 변경 기능을 테스트하던 중, 소스 코드가 간헐적으로 빌드되지 않는 문제를 겪었다. 버그는 아주 엉뚱한 위치에서 발생했고,같은 코드를 두고도 어떤 때는 빌드가 되고, 어떤 때는 되지 않는 이상한 상황이었다.재현 조건을 찾기 어려워 원인 파악이 쉽지 않았다. 결국 예전에 공부한 컴파일 과정과 빌드 시스템의 동작 방식에서 답을 찾을 수 있었다.현재 진행 중인 프로젝트는 C++ 기반이며,"무중단 업데이트(Hot Swap)"를 지원하는 구조를 가지고 있다.문제 정리내가 겪은 문제를 버그 리포트로 작성하면 다음과 같다.버그 제목 : 시스템 시간 변경 후 "부분 빌드" 시 변경 내용 미반영시스템 시간 변경 후 부분 빌드(증분 빌드) 실행 시 변경 내용이 반영되지 않음부분 빌드 실행 시 정상적으로..

개발 2026.01.09

Qt 4 · Qt 5 · Qt 6 차이점 정리 — 레거시 컴파일 실무 경험

들어가며임베디드 개발을 하다 보면 레거시가 되어버린 Qt 4.8 또는 Qt 5 기반 개발 환경을 비교적 쉽게 접하게 된다.나 역시 임베디드 크로스 컴파일 환경에서 Qt 4.8과 Qt 5, Qt 6을 모두 사용해 왔고,그 과정에서 체감한 버전별 차이와 주의할 점을 정리해 보고자 한다.우리 회사는 Qt Framework를 사용하는 제조업 기반 HMI 회사로,임베디드 장비에는 ARM Cortex-A architecture CPU를 사용한다. · Embedded Device : Ubuntu 18.04 + Qt4.8 · Linux PC용 SW : Ubuntu 22.04 + Qt5이처럼 서로 다른 환경을 동시에 다루며 겪었던 경험을 중심으로 글을 써보려 한다.Qt 4.8을 사용하며 느낀 점Qt 4.8.7은 2015..

Qt 2026.01.07

googletest(gtest) 설치부터 빌드까지: C++11 개발 환경 구성기

지난 글에서 gtest로 유닛테스트에 관한 글을 작성했다. 업무하면서 googletest를 설치하고 가볍게 따라할 수 있도록 gtest를 설치하는 방법을 기록해 보자.gtest(googletest) 다운로드googletest의 설치는 git 을 이용해 아주 쉽게 할 수 있다. 다만, 나는 업무에서 C++ 11버전을 사용하는데 gtest 최신 버전은 이를 지원하지 않는다. 따라서 구버전의 gtest가 필요하다.Windows PC에 git 을 설치하고 cmd에서 버전 명령을 통해 실행되는지 확인하자.git --version git이 잘 실행된다면 온라인에 등록된 googletest git 저장소 에서 clone 명령어를 통해 다운로드 받을 수 있다.gtest는 설치 후 별다른 설정 없이 컴파일러를 이용해 빌..

개발 2025.11.25

C++ 프로젝트에 유닛 테스트(gtest)를 도입하며 얻은 경험과 교훈

들어가며올해 개인 목표중 하나였던 Unit Test 학습에 대해 달성했다.○ Unit Test 역량 강화 ☑ "테스트 주도 개발" 학습. ☑ Qt Coco 세미나 참석. ☑ 현재 개발중인 프로젝트에 부분 도입제일 먼저 "테스트 주도 개발"을 교재로 학습하면서 유닛 테스트에 대한 개념을 잡고 간단한 기능을 구현하며 연습했다.테스트 툴은 제일 유명하고 다루기 관리가 쉬운 google의 gtest를 선정했다. 유닛테스트에 대해 부정적인 느낌으로 학습을 시작했지만, 장단점을 알고 Qt 세미나에 참석해 Coco 코드 커버리지 툴까지 접한 후에는 생각이 많이 달라졌다. 현재 프로젝트에 적용하며 "코드안정성 상승"과 "개발속도 상승" 이라는 두마리 토끼를 잡았으며 앞으로도 계속 사용할 생각이다.TDD에서는 극..

개발 2025.11.24