The following issue has been SUBMITTED. 
====================================================================== 
http://public.kitware.com/Bug/view.php?id=14258 
====================================================================== 
Reported By:                Andrew S.
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   14258
Category:                   CMake
Reproducibility:            always
Severity:                   major
Priority:                   high
Status:                     new
====================================================================== 
Date Submitted:             2013-06-29 06:12 EDT
Last Modified:              2013-06-29 06:12 EDT
====================================================================== 
Summary:                    MACOSX_BUNDLE path problem when
Description: 
(Copied from backlogged issue submitted by Duron
http://public.kitware.com/Bug/view.php?id=12451):

I'm not sure if building for iOS is officially supported, but here goes...

When building for iOS with MACOSX_BUNDLE specified on the target, this generates
an XCODE_DEPEND_HELPER.make with Foo.app/Contents/MacOS/foo paths in it. However
for iOS builds, Xcode places the executable 'foo' in Foo.app/foo.

I couldn't find an option to change this behavior.


The result is that dependency checking does not work and a clean build is
required every time the app is compiled.

End of original message

----

This bug is very annoying: you always have to change something each time in a
main target to force full project relink when developing a depend library.

See proposed patch below. It introduces MACOSX_BUNDLE_BUILD_FOR_IOS property
which will allow to remove "Contents/MacOS" from output paths when building for
iOS. The patch is fully working - tried successfully on our big project.


Steps to Reproduce: 
Set up an iOS project by setting CMAKE_OSX_SYSROOT, CMAKE_OSX_ARCHITECTURES and
MACOSX_BUNDLE_GUI_IDENTIFIER. Specify MACOSX_BUNDLE for the target executable.
Make a change in a dependency and rebuild the app. The app will not be updated.

Additional Information: 

diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index b14db43..fb3902f 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -6473,6 +6473,8 @@ std::string cmTarget::GetAppBundleDirectory(const char*
config,
                                             bool contentOnly)
 {
   std::string fpath = this->GetFullName(config, false);
+  if (this->GetPropertyAsBool("MACOSX_BUNDLE_BUILD_FOR_IOS"))
+    return fpath + ".app";
   fpath += ".app/Contents";
   if(!contentOnly)
     fpath += "/MacOS";
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2013-06-29 06:12 Andrew S.      New Issue                                    
======================================================================

--

Powered by www.kitware.com

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

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

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to