Clarification: I was too aggressive about cleaning up the output from the link 
step in the
example below.  Here’s what happened:

fatal error: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:
 can't stat file output file: 
/Users/jim/Workspace/myproject/build/xcode-osx/obj/modules/pacing/Debug/libpacing.a
 (No such file or directory)

This error was generated by the command that was supposed to assemble 
libpacing.a; hence,
my guess that the file was being deleted out from under the command.

Note that the full path to the output file does in fact exist. 

> On Sep 17, 2018, at 5:32 PM, Jim Wong <j...@airtime.com> wrote:
> 
> Folks,
> 
> I’m working with a very large CMakeLists.txt, and I’m having trouble 
> generating a working
> Xcode project from it (the Ninja and Make generators seem to work fine).
> 
> What’s happening is that the post-build step associated with each of the 
> targets in
> XCODE_DEPEND_HELPER.make is aggressively deleting a bunch of other targets, 
> including
> some that either a) haven’t been built yet; or b) are in the process of being 
> built.
> The former isn’t an issue, but the latter is: I get a build error when this 
> happens.
> 
> Here’s a *very* cut-down look at what’s happening:
> 
> Showing All Messages, Filtering for "libpacing.a".
> PhaseScriptExecution CMake\ PostBuild\ Rules 
> build/xcode-osx/cmake/osx/Release/project.build/Debug/ApiVideo_CodecsVideo_Codecs_Api.build/Script-62A3C733E930414E85209FFB.sh
>    cd /Users/jim/Workspace/myproject
>    /bin/sh -c 
> /Users/jim/Workspace/myproject/build/xcode-osx/cmake/osx/Release/project.build/Debug/ApiVideo_CodecsVideo_Codecs_Api.build/Script-62A3C733E930414E85209FFB.sh
> /bin/rm -f 
> /Users/jim/Workspace/myproject/build/xcode-osx/obj/modules/pacing/Debug/libpacing.a
> 
> PhaseScriptExecution CMake\ PostBuild\ Rules 
> build/xcode-osx/cmake/osx/Release/project.build/Debug/Rtc_BaseAudio_Format_To_String.build/Script-61E5555E2FB7443C905B7CC4.sh
>    cd /Users/jim/Workspace/myproject
>    /bin/sh -c 
> /Users/jim/Workspace/myproject/build/xcode-osx/cmake/osx/Release/project.build/Debug/Rtc_BaseAudio_Format_To_String.build/Script-61E5555E2FB7443C905B7CC4.sh
> /bin/rm -f 
> /Users/jim/Workspace/myproject/build/xcode-osx/obj/modules/pacing/Debug/libpacing.a
> 
> *** there are a lot more instances of this pattern ***
> 
> Libtool build/xcode-osx/obj/modules/pacing/Debug/libpacing.a normal x86_64
>    
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
>  -static -arch_only x86_64 -syslibroot 
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk
>  -L/Users/jim/Workspace/myproject/build/xcode-osx/obj/modules/pacing/Debug 
> -filelist 
> /Users/jim/Workspace/myproject/build/xcode-osx/cmake/osx/Release/project.build/Debug/ModulesPacingPacing.build/Objects-normal/x86_64/pacing.LinkFileList
>  
> /Users/jim/Workspace/myproject/build/xcode-osx/cmake/osx/Release/project.build/Debug/Rtc_BaseRtc_Event.build/Objects-normal/x86_64/event.o
>  -o 
> /Users/jim/Workspace/myproject/build/xcode-osx/obj/modules/pacing/Debug/libpacing.a
> fatal error: 
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:
>  can't stat file output file: 
> /Users/jim/Workspace/myproject/build/xcode-osx/obj/modules/pacing/Debug/libpacing.a
>  (No such file or directory)
> 
> *** here we’re dead ***
> 
> *** deleting libpacing.a one more time for good measure ***
> 
> PhaseScriptExecution CMake\ PostBuild\ Rules 
> build/xcode-osx/cmake/osx/Release/project.build/Debug/ModulesAudio_ProcessingAgc2Fixed_Digital.build/Script-A48E7039684F4F828D6DC3DE.sh
>    cd /Users/jim/Workspace/myproject
>    /bin/sh -c 
> /Users/jim/Workspace/myproject/build/xcode-osx/cmake/osx/Release/project.build/Debug/ModulesAudio_ProcessingAgc2Fixed_Digital.build/Script-A48E7039684F4F828D6DC3DE.sh
> /bin/rm -f 
> /Users/jim/Workspace/myproject/build/xcode-osx/obj/modules/pacing/Debug/libpacing.a
> 
> As you can see, Xcode is complaining about the file libpacing.a not existing 
> at the same time
> it’s trying to link that very file.  My guess has been that the file is 
> getting deleted out
> from under the linker.  I’m not sure how to resolve that issue, however.
> 
> Part of the issue here is that we’re working with a very large CMake file 
> that was generated
> from the output of another build system (don’t ask), so narrowing this down 
> to an easily
> replicable scenario has been challenging.  As far as I can tell, the problem 
> is as follows:
> 
> 1. Target A is an object library that is used by several targets.
> 2. Target A* is the post-build target for A.
> 3. Target B is an executable that depends on A.
> 4. Target C is different library that B depends on.
> 
> Notably, C does not depend on A; nor does A depend on C.
> 
> After A is built by Xcode, it builds A* in XCODE_DEPEND_HELPER.make.  Because 
> B depends on A,
> A* depends on B in this Makefile.  As a result, B’s dependencies are checked 
> to make sure it’s
> up to date.
> 
> B depends on C (both in reality and in XCODE_DEPEND_HELPER.make), so C’s 
> dependencies are
> checked.  And if C’s dependencies aren’t up to date, or if C doesn’t exist at 
> all, C is
> “built”, which in the context of XCODE_DEPEND_HELPER.make means that it’s 
> deleted, since
> the action for C is “rm -f C”.
> 
> As a consequence, building A seems to result in the deletion of C; and if 
> there are many
> targets like A (targets that are depended on by things that also depend on 
> C), C can
> be deleted many times.
> 
> And, since there’s no dependency relationship between A and C, there’s 
> nothing preventing
> A’s post-build step from running at the same time C is being built, which 
> produces (I think)
> the errors we’re seeing.
> 
> Does this analysis seem correct, or am I missing something about how 
> XCODE_DEPEND_HELPER.make
> is supposed to work?
> 
> Assuming I’m on the right track, what’s the right path to resolve the issue?  
> The dependency
> structure referenced above seems to be valid, at least superficially, but 
> it’s giving Xcode fits.
> We’re in the process of massaging the generated CMake into shape manually, 
> but I want to
> make sure we’re headed in the right direction.
> 
> Thanks in advance for any hints or guidance you can provide.
> 

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to