target이 static library인 CMake를 서브프로젝트로 포함시키는 구성에서의 종속성 관리.
회사에서 개발하는 게임은, 엔진을 자체 수정하며 작업하기에, 다양한 내부 라이브러리를 링크해서 사용한다.
지금껏 iOS 환경에서는 XCode를 직접 수정해가며 종속성을 관리하고 프로젝트들을 링킹했는데,
이번에 서브 프로젝트들을 CMake로 관리하려고 했다.
각 서브프로젝트의 CMakeLists.txt별로 존재하는 다양한 라이브러리 파일들..(ffmpeg라던지 zlib라던지 ssl이라던지..)
이들을 메인 프로젝트가 알 수 있게 해야 했다.
하지만, static library가 target 인 CMake를 XCodeProj로 만들 때, 종속성 정보를 메인 프로젝트로 전달해 줄 방법이 없었다.
그래서 방법을 찾기 위해 며칠 고생했던 흔적을 정리해 보았다.
- 해당 서브 프로젝트들은 static library로 빌드되어 메인 프로젝트에 포함된다.
- 문제는, 해당 서브 프로젝트들 또한 각자 static library file들을 종속성으로 가진다.
- 이 경우, 메인 프로젝트에서 모-든(서브의 것들까지) static library를 종속성으로 추가해주면 된다.
- 하지만 나의 경우에는 CMake에 등록된 정적 라이브러리 목록을 그대로 사용하고자 했다.
- 분리되어버리거나 관리 포인트가 두개가 되어버리면 업무의 의미가 사라져버리니까.
- static library target은 종속성을 가지지 않는다.
- 정확히 말하면, 종속성 정보는 파일에 담기지 않는다.
- https://stackoverflow.com/a/68343612
- 아무리 target_link_libraries 를 사용해 보아도, xcodeproj에는 정보가 담기지 않았다.
- 해결 방법은 STATIC_LIBRARY_OPTIONS property 였다.
- STATIC_LIBRARY_OPTIONS — CMake 3.28.1 Documentation
- 이 옵션에 라이브러리들을 등록하니, 메인 프로젝트까지 종속성 정보가 전달되었다.
'연구한 이야기 > 문제 해결 이야기' 카테고리의 다른 글
Android Studio NDK breakpoint가 잡히지 않아요! (0) | 2024.03.02 |
---|---|
dockerfile은 죄가 없다. (4) | 2024.02.24 |
jenkins(image) 에서 docker buildx를 사용하고 싶어요! (0) | 2023.12.22 |
서버 스트레스테스트 시 일정 주기로 멈춰요! (0) | 2023.12.09 |
docker exec format error (0) | 2023.12.09 |