migrate to subprojects in cmake