기본 네이밍 3가지
| 명칭 | 설명 | 비고 |
|---|---|---|
| ''snake_case | 모두 소문자 | 파일 이름 및 변수명, 함수명 |
| CamelCased | 단어첫글자 대문자 | 타입 및 클래스, ROS 인터페이스 파일 |
| ALL_CAPITALS | 모두 대문자 | 상수 |
| Python | |
|---|---|
| 기본 규칙 | 파이썬 3(3.5 이상)을 사용 |
| 라인 길이 | 최대 100문자 |
| 이름 규칙 | - CamelCased: 타입, 클래스 - snake_case: 파일, 패키지, 인터페이그, 모듈, 변수, 함수, 메소드 - ALL_CAPITALS: 상수 |
| 공백문자 vs 탭 | - 기본 들여쓰기 = space*4 (tab key는 사용 금지) - hanging indent(문장 중간에 들여쓰기) -> K&R, BSD, GNU |
| 괄호(Brace) | - 계산식 및 배열 인덱스로 사용 - 자료형에 따라 적절한 괄호를 사용 |
| 주석 | - """(문장주석) - #(구현 주석) |
| 린터 | - 파이썬 코드 스타일의 자동 오류 검출을 위하여 ament_flake8 사용 |
| 기타 | - 모든 문자는 "가 아닌 '을 사용 |

| C++ | |
|---|---|
| 기본 규칙 | C++14 Standard |
| 라인 길이 | 최대 100문자 |
| 이름 규칙 | - CamelCased: 타입, 클래스 - snakecase: 파일, 패키지, 인터페이그, 모듈, 변수, 함수, 메소드 - ALL_CAPITALS: 상수 - 소스파일: .cpp - 헤더파일: .hpp - 전역변수는 되도록 사용하지 않고 사용할 경우 'g'접두어 붙이기 - 클래스 멤버 변수: 마지막에 ( _)붙이기 |
| 공백문자 vs 탭 | -기본 들여쓰기(indent) = space*2 - class의 접근 지정자 (public, protected, private)는 들여쓰기를 하지 않는다 |
| 괄호(Brace) | if, else, do, while, for 구문에 괄호 사용 {} |
| 주석 | - 문서 주석 /* */ - 구현 주석 // |
| 린터 | c++ 코드 스타일의 자동 오류 검출(ament_cpplint, ament_uncrustify) 정적 코드 분석(ament_cppcheck) |
| 기타 | - Boost 라이브러리의 사용은 피하기 - 포인트 구문: char"c;처럼 사용 - 중첩 템플릿: set<list< string >> |
패키지 내 코드를 빌드하는 방법을 기술하는 파일
빌드에 필요한 컴파일러, 라이브러리, 소스 파일 등을 명시하고, 실행 파일, 라이브러리, 메시지, 서비스 등의 빌드 대상 및 의존성 관리를 설정
빌드 프로세스를 자동화하기 위한 CMake 빌드 시스템에 의해 사용
사용 목적
- ros2에서 패키지의 빌드 규칙 정의
- cmake가 각 패키지를 어떻게 컴파일하고 링크할지 지시하는 지침을 포함 p17
| CMakeLists.txt의 역할 |
|---|
| 1. 패키지에 필요한 최소 CMake 버전 지정 |
| 2. 프로젝트 이름과 버전 설정 |
| 3. 빌드해야 할 타겟 정의 --> executables, libraries |
| 4. 필요한 종속성 패키지를 찾고 링크 |
| 5. 특정 빌드 옵션을 설정하거나 사용자 정의 빌드 규칙 |
| 6. 테스트 실행 및 설치 규칙을 정의 |
https://velog.io/@rlwnd0122/ROS2-setup.py-setup.cfg