Closed willneumob closed 8 years ago
You generally don't need to install xcbuild, unless you want to try out the built-in specifications. If you just want to run xcbuild, run it out of the build
directory after compiling.
Do not install xcbuild without a prefix: it will stop your system from booting. xcbuild has tools and libraries with the same names as system libraries, and if you disable SIP to install it, they will conflict.
If you do want to install, set a prefix with make install PREFIX=
. Or use CMake directly (rather than the wrapper Makefile
) and define CMAKE_INSTALL_PREFIX
as usual.
When you say it doesn't handle prefixes correctly, that is in one sense correct: xcbuild cannot be installed to a Unix-style prefix. Instead, xcbuild installs to a "Developer root". Create a directory called "Developer" and point xcbuild at that as a prefix. This is similar to how Xcode is packaged, and it's necessary for the directory structure that the specifications expect.
For example:
mkdir ~/Developer
make install PREFIX=~/Developer
DEVELOPER_DIR=~/Developer xcbuild
Note that if you do use a custom DEVELOPER_DIR
as above, you'll need to make sure the developer root has the necessary platforms and SDKs inside.
There's more discussion on c25336b50b7735c50a692f2453b6dded435ceb14; this might change pending the outcome of #81 as well.
It frustrates me that you say this is intended behavior :) Running it from a random Git working copy sitting on my laptop doesn't fit my use case. This is for a CI system, where I need to have it installed in a predictable location, preferably without modifying $PATH.. Ideally, this would be a Homebrew formula.
xctool` installed globally very easily via Homebrew.
And if a make install
can really break your system, mine may now be broken, and at the very least, this warning, and proper installation instructions, should be in the README.
Does make install PREFIX=/path/to/Developer
not work for you?
920c1b445d1fe67453f786a08f463c49995b7f1e will make sure xcbuild isn't accidentally installed un-prefixed.
I think your system should be OK, because SIP won't let you overwrite system files by default even with sudo
.
On current Mac OS X, no one has write permission to
/usr/lib
. My first thought was to change the install prefix, butxcbuild
's CMakeLists.txt doesn't handle this properly. It installed things under/usr/local/usr/lib
and/usr/local/usr/bin
instead of/usr/local/lib
and/usr/local/bin
.