2012-02-06 97 views
4

我在我的Xcode 4项目中使用了bison解析器生成器。我已经写了自定义生成规则生成C++ - 从* .Y语法文件的源文件:Xcode 4.2 - 将派生文件添加到项目

/usr/local/bin/bison 
--defines="${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.hpp" 
--output="${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.cpp" 
--verbose "${INPUT_FILE_PATH}" 

正如你可以看到,Xcode的地方$DERIVED_FILES_DIR文件夹中生成文件。现在我需要将生成的头文件grammar.hpp与目标文件导出为库。

问题是,Xcode不允许导出文件,不包括在项目中。

第一种解决方案看起来是创建一个绝对路径设置为$DERIVED_FILES_DIR的组。那么,它实际上工作,直到我更改我的生成设置来构建发布配置,因为$DERIVED_FILES_DIR是依赖于生成设置。 第二个解决方案是莫名其妙定置组路径字面上变量,即

path = $DERIVED_FILES_DIR 

到目前为止,我已经发现了两个可能的方式来做到这一点:How to reference files with environment variables?File references relative to DERIVED_FILE_DIR in Xcode。无论哪种方式不适合我。

也许有人知道更好的方式将生成的文件添加到项目?

回答

0

你最好的选择是:

  1. 产生的SRCROOT文件
  2. 生成文件BUILT_PRODUCTS_DIR

这些都有“相对于...”选项,应该让你将文件添加到您的项目。

0

我最终生成${SRCROOT}目录中的文件,使用定制make构建目标,使用Makefile来处理重新生成的派生文件。我只是将这些生成的文件添加到项目中,并且使所有实际的构建目标都依赖于此目标make