Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Here's what I'm doing:</p> <p>1) In my framework CMakeLists.txt file, I have the following:</p> <pre><code>IF (APPLE) SET_TARGET_PROPERTIES( MyFramework PROPERTIES FRAMEWORK true) SET_TARGET_PROPERTIES( MyFramework PROPERTIES XCODE_ATTRIBUTE_INSTALL_PATH @executable_path/../Frameworks/ ) ENDIF (APPLE) </code></pre> <p>The second "set_target_properties" line configures the framework to always be looked for in the application bundle in the Frameworks sub-folder.</p> <p>2) In my top-level CMakeLists.txt file, I add setup a unified binary output directory:</p> <pre><code>SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Bin) SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Bin ) SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Bin ) </code></pre> <p>3) Then, in my applications' CMakeLists.txt file, I have the following:</p> <pre><code>IF (APPLE) ADD_CUSTOM_COMMAND( TARGET MyApp POST_BUILD COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_HOME_DIRECTORY}/CopyFramework.py --binary ${PROJECT_BINARY_DIR}/Bin --framework MyFramework.framework --app MyApp.app ) ENDIF (APPLE) </code></pre> <p>This calls out to my python script, which does the work of assembling the src and dest paths, and actually copying the Framework.</p> <p>The final trick is that since this is a Mac only thing, I can rely on an Xcode environment variable within the Python script:</p> <pre><code> config= os.environ["CONFIGURATION"] </code></pre> <p>This allows me to assemble the complete path to the actual binary locations of the framework and the app.</p> <p>The one thing I wish was that there was a CMake variable that would expand to the current Config within the context of the ADD_CUSTOM_COMMAND... It'd be nice to not have to resort to using the Xcode environment variable.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload