[CMake] XCODE_DEPEND_HELPER dependency issues
Bill Hoffman
bill.hoffman at kitware.com
Fri Dec 21 08:33:45 EST 2007
Nicolas Tisserand wrote:
> Hi,
>
> I'm working on a C++ project that's been happily using CMake as a
> cross-platform (mac/pc/linux) build tool for a year now.
>
> We're using CMake 2.4.6 on all platforms.
>
> Recently, some changes in our build system lead to the following
> dependency graph:
>
> LIB1 <- EXE1 <- LIB2 <- EXE2
> ^ |
> `-----------------------------------'
>
> (LIB* are static libraries, and EXE* executables)
>
> EXE1 is a tool that generates input source files for LIB2, hence the
> extra-dependency.
>
> Everything works nice and smooth with the Linux / Make, MacOS X / Make
> and WIN32 / VC80 generators.
>
> Trouble is, on the mac, the XCODE_DEPEND_HELPER (XDH) is added to all
> final (executable, dynamic libraries and modules) targets by the XCode
> generator:
>
> .---------------------------------------
> v \
> LIB1 <-------. |
> EXE1 <- LIB2 <- EXE2
> XDH <-------' |
> ^---------------- -----------------------'
>
> When EXE2 (or ALL_BUILD) is the active target and LIB2 needs a
> rebuild, the following happens:
>
> * The XCODE_DEPEND_HELPER make command is run, doing nothing.
> * EXE1 is left alone
> * LIB2 gets correctly rebuilt
> * EXE2 does not get relinked because when XCODE_DEPEND_HELPER was run,
> EXE2 was still up-to-date with LIB2 :-(
>
> This is very annoying.
>
> Here's the only sort-of workaround I could come up with:
>
> * remove the EXE1 <- LIB2 dependency, so that EXE2 gets correctly
> relinked when the active target is EXE2
> * exclude EXE1 from the build (using EXCLUDE_FROM_ALL), so that EXE2
> gets correctly relinked when the active target is ALL_BUILD
>
> But this forces XCode users to rebuild EXE1 manually.
>
>
> Finally, here are my questions:
>
> Is there a nicer solution to my problem?
> Is this a known bug?
> Are there any plans for fixing it?
> Would 2.4.7 solve my problems? (I checked the ChangeLogs but did not
> see any mention of it)
>
> Sorry for the bad ascii-art :-)
You should create a small example that shows the problem, and attach it
to a bug report.
-Bill
More information about the CMake
mailing list