让Xcode通过处理带有自定义扩展名的文件生成一个C文件



我正在尝试设置Xcode来构建生成的。c文件,就像它为yacc (*.y)和lex (*.l)文件生成的文件一样。

假设我有一个扩展名为*.corn的输入文件,该文件将由我的工具处理以创建C源文件。然后,我希望使用Xcode的其余机制编译和链接这些C源文件。

这正是发生在我的yacclex.y.l文件。项目目标只包含.y.l文件,其余的会自动发生。生成的.c文件放在派生文件目录中,并自动编译和链接。

以下是我到目前为止所做的尝试:

-如果我只是添加一个.corn文件到我的目标,Xcode复制到包在构建时假定它是一个资源。好的,无论.

-I然后创建一个自定义构建规则来处理

文件名匹配的源文件:* .corn

使用定制脚本:

#!/bin/sh
cp "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.c"

我必须给它一个输出文件,所以:

OutputFiles:$ {DERIVED_FILES_DIR}/$ {INPUT_FILE_BASE} . c

注意,在这种情况下,我只是复制文件,因为我用。c扩展名重命名它。(当我在玩的时候,.corn文件只包含C源代码。)

那么现在bundle目录创建之前,我得到了以下警告:

unexpected C compiler invocation with specified outputs: 'blahblahblah/Build/Products/Debug-iphonesimulator/MyApp.app/foo.c' (for input: 'blahblahblah/Build/Intermediates.noindex/MyApp.build/Debug-iphonesimulator/MyApp.build/DerivedSources/foo.c')

然后在链接阶段之后的,运行上面的脚本,并且在DERIVED_FILES_DIR中得到foo.c。但是它不会被编译,值得注意的是。玉米不再被复制到包中,所以还有希望。

我已经尝试了很多其他的东西,但这是我能描述的最干净的其他人可以尝试。请问是什么魔法咒语使它工作?!

请注意,我也尝试过使用DERIVED_SOURCES_DIR而不是DERIVED_FILES_DIR。

我错过了两件事:

  1. 我需要将.corn文件添加到"编译源代码"构建阶段。
  2. 通过在添加自定义构建规则之前将。corn文件添加到项目/目标中,Xcode将。corn文件添加到"拷贝Bundle资源"中。

相关内容

  • 没有找到相关文章

最新更新