[ https://issues.apache.org/jira/browse/LOGCXX-346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thorsten Schöning resolved LOGCXX-346. -------------------------------------- Resolution: Won't Fix >From my point of view this looks like a problem of cpptasks because this is >generating the project file and I cannot see how we could influence the >default installation directory. Therefore I'm closing this issue. > Mac XCode project doesn't define the Dynamic Library Install Name correctly > (nor the installation directory) > ------------------------------------------------------------------------------------------------------------ > > Key: LOGCXX-346 > URL: https://issues.apache.org/jira/browse/LOGCXX-346 > Project: Log4cxx > Issue Type: Bug > Components: Build > Affects Versions: 0.10.0 > Environment: Mac OS X 10.6.1, but I see no reason for this problem > not to be happening under 10.5.x also > I use XCode 3.2.1 > Reporter: Jean-Denis Muys > Assignee: Curt Arnold > Priority: Minor > Original Estimate: 5m > Remaining Estimate: 5m > > The provided XCode project builds the log4cxx dynamic library to be installed > in the ~/bin directory. This means that any client app will not be able to > run unless exists on the client computer a user with the same name as the one > who built log4xx, in which the bin subdirectory exists, in which > log4cxx.dylib has been put, all with read permissions. The likelihood of that > is... low. > The fix is very simple: in the XCode project settings: > 1- clear the "Installation Directory" setting (under category Deployment) > (currently ~/bin). XCode will reset it to the more correct /usr/local/lib. > But in any case please note that this setting will not be used if you do step > 2. > 2- essential: change the "Dynamic Library Install Name" (under category > Linking). It must now read: > @rpath/$(EXECUTABLE_PATH) > That way the same log4cxx.dylib works whether it is installed in a system > location such as /usr/lib or inside a client code bundle, in a way that keeps > the client code totally independent from its own location in the file system. > Explanation: the macro $(EXECUTABLE_PATH) will be replaced by XCode to be the > name of the dynamic library, "log4cxx.dylib" in our case. the variable @rpath > is not a macro, but a run time variable that will be expanded by the loader > from the client code to be... whatever the client code has set. > Typically, the client code will set it (under its XCode project "Runpath > Search Paths" setting) to be a search list that include /usr/lib/ and > /usr/local/lib, but also, and more importantly, its own bundle directory. > Here is what I set it mine to: > @loader_path/../Libraries > And then of course, I put log4cxx.dylib in my code bundle at the relative > path Contents/Libraries/log4cxx.dylib > @loader_path is (another) runtime variable expanded by the loader which > represent the directory where the executable is. For a normal app named > "sample", this directory will be for example: > /Applications/sample.app/Contents/MacOS > So @loader_path/../Libraries expands at runtime to be: > /Applications/sample.app/Contents/Libraries/log4cxx.dylib > Regards. > JDM -- This message was sent by Atlassian JIRA (v6.1.5#6160)