[cmake-developers] [CMake 0014854]: Xcode projects with binary files cannot load in Xcode

Mantis Bug Tracker mantis at public.kitware.com
Mon Mar 31 12:53:13 EDT 2014


The following issue has been SUBMITTED. 
====================================================================== 
http://public.kitware.com/Bug/view.php?id=14854 
====================================================================== 
Reported By:                Petr Lefner
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   14854
Category:                   CMake
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2014-03-31 12:53 EDT
Last Modified:              2014-03-31 12:53 EDT
====================================================================== 
Summary:                    Xcode projects with binary files cannot load in
Xcode
Description: 
If an project lists some binary files, CMake generator creates .pbxproject where
htese files are listed as 'source files', which causes Xocde unable* to load
that project.

* depends on total file size or amount; say that 300MB makes it about 1 hour
until Xcode can be used. Until that, hourglass and 200% CPU drain suggest heavy
background thinking about he files.

If those file are not listed in project, Xcode opens it like a charm.

Steps to Reproduce: 
Create a CMakeLists.txt with usual structure to have some binary target in
there.
Then add some binary files (assets or resources), let say we have them within
the DATA_FILES list variable (full paths). 
Intention is to get those files into app bundle (.app/). For this case, do not
consider that to put into .app, a small hack must be achieved.

# Collect resource files

foreach(FILE ${DATA_FILES})
    set_source_files_properties(
	${FILE}
	PROPERTIES
	MACOSX_PACKAGE_LOCATION ${MACOSX_BUNDLE_BUNDLE_NAME}.app/${TARGET}
	GENERATED TRUE
    )
    list(APPEND ASSETS ${FILE})
endforeach()

# Add binary target and register resoruce files in project listings
add_executable(osx_app_target MACOSX_BUNDLE ${SOURCES} ${ASSETS})


Additional Information: 
Given method worked prior 2.8.12 (not sure exactly about problem version).
There's same issue if one wants to copy files via a custom command: 

# Copy from SRC to DST, being part of current target. 
add_custom_command(OUTPUT ${DST}
    COMMAND ${CMAKE_COMMAND} -E copy ${SRC} ${DST}
    MAIN_DEPENDENCY ${SRC}
    COMMENT "Copying ${SRC} to ${DST}")

This used to do same troubles even already prior 2.8.12


In case of further assistance, do not hesitate to ask for more information. If
htere's a new way adding resources to MACOSX_BUNDLE target (into .app), I did
not found it - please point me out. 
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2014-03-31 12:53 Petr Lefner    New Issue                                    
======================================================================



More information about the cmake-developers mailing list