Reputation: 138201
In Xcode 7, you can create 'Run Script' phases in the Build Phases tab. At the bottom of the area, there's an 'Input Files' section and an 'Output Files' section.
I have a script that generates a .cpp file at $(DERIVED_FILE_DIR)/myfile.cpp
. The file is listed in the 'Output Files' section of the phase. However, it appears that it's not compiled into my program, as the symbol that it defines are identified as missing by the linker.
How can I tell Xcode to compile this file as well?
Upvotes: 3
Views: 2613
Reputation: 138201
One possible solution (which feels like a hack) is to insert the built file into the project, set its location (in the Identity and Type section of the Utilities bar) and then edit its location in the project file with a text editor for computer independence. In my case, the file entry (with newlines for readability) now looks like:
DC40C4121C7FC98F0087702A /* bindings.cpp */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.cpp.cpp;
name = myfile.cpp;
path = "$(DERIVED_FILE_DIR)/myfile.cpp";
sourceTree = "<absolute>";
};
This is interpreted by the file browser as a file whose absolute path is literally $(DERIVED_FILE_DIR)/myfile.cpp
(and the file always shows in red in the project explorer), but the build system will grab the file from the correct location.
Upvotes: 2