본문 바로가기
반응형

c6

임베디드 빌드 시스템 (Makefile, CMake, Ninja) 임베디드 빌드 시스템: Makefile, CMake, Ninja의 현업 트렌드임베디드 소프트웨어 개발에서는 Makefile, CMake, Ninja 세 가지 빌드 시스템이 가장 널리 쓰임각 빌드 시스템은 개발 환경, 프로젝트 규모, 협업 방식 등에 따라 선택이 달라지지만, 최근 트렌드의 큰 흐름이 있음이 문서에서는 임베디드에서의 각 도구의 역할, 장단점, 그리고 현업에서의 주력 사용 양상을 정리함📝 Makefile: 임베디드의 오리지널 표준Makefile은 임베디드, 리눅스, C/C++ 기반 개발에서 가장 오래된 빌드 자동화 표준GNU Make 등으로 실행간단하고 직접적원하는 빌드 과정, 타깃, 의존성을 수동으로 명확하게 정의강점소규모, 레거시, 커스터마이즈가 필요한 임베디드 프로젝트에서 활용도가 높음.. 2025. 7. 13.
CMake vs Makefile CMake와 Makefile의 차이점과 선택 기준CMake와 Makefile은 모두 소프트웨어 개발에서 반복적인 빌드 작업을 자동화하는 데 사용됨CMake는 빌드 스크립트를 자동으로 생성해주는 “메타 빌드 시스템”, Makefile은 빌드 과정을 직접 정의하는 “전통적인 빌드 스크립트”프로젝트 규모, 협업 환경, 지원하는 플랫폼/IDE 등에 따라 두 도구의 선택이 달라질 수 있음아래에서는 CMake와 Makefile의 개념, 특징, 주요 사용 사례, 그리고 장단점을 비교📝 CMake vs Makefile의 기본 개념CMakeCMake는 크로스 플랫폼 빌드 자동화 도구 생성기사용자가 작성한 CMakeLists.txt를 바탕으로, 각 운영체제와 IDE에 맞는 빌드 파일(예: Makefile, Visual .. 2025. 7. 12.
CMake 정리 CMake란 무엇이며, 왜 사용하는가?CMake는 다양한 플랫폼에서 사용할 수 있는 빌드 자동화 도구 생성기(Build System Generator)직접 소스를 빌드하지 않고, 각 환경에 맞는 빌드 스크립트(Makefile, Visual Studio Project 등)를 자동으로 만들어줌C/C++ 프로젝트를 비롯한 여러 언어에서 널리 쓰이며, 크로스 플랫폼(Windows, Linux, macOS) 개발 환경에 매우 유리아래에서는 CMake가 무엇인지, 그리고 왜 개발에서 자주 사용되는지 살펴봄📝 CMake의 기본 개념1. CMake는 소스코드 빌드를 자동화하기 위한 도구2. 프로그래머가 직접 Makefile이나 프로젝트 파일을 일일이 작성하는 대신, CMake 설정 파일(CMakeLists.txt)만.. 2025. 7. 11.
Makefile 정리 Makefile이란 무엇이며, 왜 사용하는가?Makefile은 소프트웨어 프로젝트의 빌드 자동화를 위해 사용하는 파일주로 make라는 빌드 도구와 함께 사용되며, 컴파일, 링크, 테스트, 배포 등 반복 작업을 자동으로 처리C, C++ 등 컴파일 언어에서 가장 오래되고 널리 쓰이는 빌드 시스템아래에서는 Makefile의 개념과 주요 사용 이유에 대해 살펴봄📝 Makefile의 기본 개념1. Makefile은 반복적인 개발 작업(빌드, 테스트, 설치 등)을 자동화하는 데 사용2. 프로젝트 내의 파일 의존성과 빌드 명령어를 명시적으로 지정해 줌3. 대형 프로젝트에서 소스 파일이 많아질 때 관리가 훨씬 용이해짐Make: 유닉스 계열 시스템에서 널리 사용되는 빌드 자동화 도구Makefile: make가 읽어서 .. 2025. 7. 10.
[Git] 상황 별 활용 시나리오 정리 브랜치 복구, 코드 롤백, 협업 중 충돌 해결, 실무용 .gitignore 템플릿, 실무용 .gitconfig 설정 예시, GitHub Actions 실무 활용 예시(c, c++, python), 자동 CHANGELOG 생성 (태그 기반)1. Git 복구 전략 시나리오🔁 브랜치 삭제 후 복구# 최근 커밋 내역에서 복구$ git reflog$ git checkout -b deleted-branch 🔙 강제 reset 전 복구# 실수로 git reset --hard 한 경우$ git reflog$ git reset --hard HEAD@{1} # 또는 원하는 시점의 HEAD@{n} 🔨 충돌 후 손상된 rebase 되돌리기$ git rebase --abort 🆘 스테이지 취소 or 되돌리기# 스테이.. 2025. 6. 26.
c, c++ 임베디드 설계 비교 C (.c) vs C++ (.cpp) 기반 임베디드 설계 비교 정리요약항목C 기반 설계 (.c)C++ 기반 설계 (.cpp)주요 개념구조체 + 함수 분리클래스 (캡슐화, 상속, 다형성 등)상태/동작struct로 상태, function()으로 동작클래스 멤버 변수 + 멤버 함수로 통합모듈화파일 단위 (.c/.h) 모듈화객체 단위 (클래스) 모듈화의존성extern 또는 handle 방식참조(&) 또는 포인터 기반 의존성 주입싱글톤 처리전역변수 또는 getInstance() 직접 구현정적 멤버 or 싱글톤 패턴상속/다형성직접 구현 어렵고 불편명시적 지원 (virtual 등)코드 재사용성낮음 (구조체 확장 어려움)높음 (클래스 재사용 용이)초기화/생성자별도 init_XXX() 함수 필요생성자 자동 호출 가능컨텍.. 2025. 5. 21.
반응형