Question

In Xcode, how can I call a 'shell script' which is a PERL script that copies the .app and .dsym files to a different directory?

I want to pass the name of the project and/or the project's root directory to the script. I want to have the script called every time I build in release and distribution modes but not in debug mode.

Was it helpful?

Solution

Right-click on your target and choose Add->New Build Phase->New Run Script Build Phase.

Inside the "Script" text area, add:

if [ ${CONFIGURATION} != "Debug" ]
then
    /usr/bin/perl "${PROJECT_DIR}/myperlscript.pl" "${PRODUCT_NAME}" "${PROJECT_DIR}"
fi

Change the location and name of myperlscript.pl to be the location and name of your script.

Make sure to move the Run Script step to be after Link Binary With Libraries, since you're copying the built .app.

(Might also want to add the "perl" tag to the question)

OTHER TIPS

For anyone else who is wondering, you can also do a simple copy via

[Click on Scheme Name] -> Edit Scheme... -> [Select Scheme] -> Run "Target" -> Post-actions

and add a cp command. In my case, for quick testing and ease of use, I wanted to copy my binary back to the project directory so that I could process some data files. I used the following:

cp ${TARGET_BUILD_DIR}/${TARGET_NAME} ${PROJECT_DIR}/"binaryFileName"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top