fz 1.6 & 1.7: C, ASM 및 C++를 CMake hell 없이 빌드
Source: Dev.to
fz 1.6 & 1.7의 새로운 기능
프로젝트 초기화
fz init은 한 번에 .fz.yaml, .fzignore 및 README 파일을 생성해, 코드를 작성하기 전에 보일러플레이트를 복사‑붙여넣기 할 필요를 없앱니다.
설정 파일 지원
.fz.yaml 파일을 통해 의존성, 플래그, 출력 형식을 한 번 정의하고 잊어버릴 수 있습니다. 대규모 프로젝트에서는 단일 진실의 원천을 제공해 큰 도움이 됩니다.
파일 무시
.fzignore는 .gitignore와 동일하게 동작합니다: 무시할 패턴을 나열하면 fz가 빌드 과정에서 해당 파일들을 건너뜁니다.
플랫 바이너리 출력
-format bin은 ELF 헤더가 없는 순수 바이너리를 생성합니다—부트로더와 펌웨어처럼 헤더가 불필요한 경우에 이상적입니다.
자동 라이브러리 주입
설정 파일의 libs에 나열된 라이브러리(-lm, -lc 등)가 자동으로 주입됩니다.
쉬운 플래그 관리
flags.cc에 -O3 -march=native와 같은 컴파일러 플래그를 넣기만 하면 빌드 스크립트를 수정할 필요가 없습니다.
병렬 빌드
-j N 옵션으로 병렬 컴파일을 활성화합니다. 12코어 머신에서는 파일당 스레드가 눈 깜짝할 사이에 분산되어, 시스템 소프트웨어 프로젝트처럼 파일 하나하나가 중요한 경우 큰 도움이 됩니다.
링커 스크립트 지원
정밀한 주소 제어를 위해 링커 스크립트(-T, -Ttext)를 전달할 수 있습니다—OS 및 임베디드 타깃 개발에 필수적입니다.
인터랙티브 셸
fz -shell을 실행하면 인터랙티브 모드에 들어가 파라미터를 조정하고, 빌드·클린·출력 실시간 감시 등을 할 수 있습니다. 디버그 루프에 깊이 빠져 있을 때 같은 명령을 여러 번 입력하지 않아도 되어 편리합니다.
완전한 C++ 지원
.cpp, .cc, .cxx 확장자를 가진 파일도 C와 동일한 엄격한 플래그로 컴파일되어, 언어 간 일관된 동작을 제공합니다.
설치
go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
자료
- 문서, 예제, 커뮤니티 포럼:
- 완전 오픈 소스; 풀 리퀘스트를 환영합니다.