Reputation: 165
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.
Upvotes: 5
Views: 16005
Reputation: 11956
Instead of a script, Xcode 12.4 has an build phase for copying files:
If you don't want an absolute path or one of the destinations provided, you'll have to use a Run Script Phase instead.
Upvotes: 2
Reputation: 9039
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"
Upvotes: 9
Reputation: 27601
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)
Upvotes: 5