CMake 쓰면서 진짜

장황한데다 가독성도 떨어지는 syntax,
이상한 behavior(대표적으로 ExternalProject의 PATCH_COMMAND),
전체적으로 뭔가를 추가하는 것들은 크게 불편함 없는데 기존에 추가했던걸 빼는 건 하나같이 엄청 지저분하거나 복잡하고 hack을 써야 함.


이런 것들 때문에 억지로 썼는데

GN build는 syntax가 되게 깔끔하게 정돈된 느낌이고 toolchain들을 하나하나 직접 정의해줘야 하는 번거로움은 있지만 대신 그만큼 개발자가 컨트롤할 수 있는 반경이 넓음.

특히 마음에 드는 게 config인데 컴파일 옵션같은 것들을 한데 모아놓고 그걸 타겟마다 편하게 빼고 삽입하고가 가능함.

visibility 기능을 통해서 특정 소스나 타겟이 아무데나 함부로 링크되는 것도 막을 수 있음. 내부에서만 사용돼야 하는 라이브러리들을 외부에서 사용하지 못 하도록 빌드 시스템 레벨에서 제한이 됨.



Chromium을 위해서 만든 메타 빌드 시스템이지만 그냥 범용적으로 출시했으면 진짜 열심히 썼을텐데 아쉽다.