After recently upgrading Cedar and PivotalCoreKit both to HEAD of master, we started getting link errors with missing symbols, to wit:
Undefined symbols for architecture i386:
"Cedar::Doubles::StubbedMethod::raise_for_multiple_return_values() const", referenced from:
. . . .
. . . etc.
We use Cedar as a submodule precisely so we can get the latest goodies without waiting for releases.
Now, PivotalCoreKit also uses Cedar as a submodule, but a slightly older version.
I checked the commits between the version of Cedar employed in PCK and HEAD:
git grep raise_for_multiple_return_values $(git rev-list 9914b2d..4a80e9d)
and found that, indeed, there were new calls to raise_for_. . . . .etc.
Setting my project’s Cedar submodule back to the same version as PCK’s made linking work correctly.
What I think is going on here is that Xcode’s implicit dependency tools are building Cedar for PCK and then being content with that, older, version later on when my test suite needs it as well.
Unlike Xcode, I am not content with this. Since Cedar is a project in my workspace, I can’t simply tell it that my particular version of Cedar is a dependency, and I am thrown upon the mercies of Xcode’s dependency resolution system.
Can anyone suggest a way to get the version of Cedar I want that doesn’t involve forking PCK?