在宏上使用LLVM编译器的新构建设置

时间:2012-07-06 23:04:43

标签: xcode cocoa preprocessor

我刚刚在Xcode 4.3.3上创建了一个新的cocoa项目。 Apple LLVM编译器3.1设置的预处理器宏分配了DEBUG = 1 $(继承)值。我删除它并再次添加它,现在我在编译时遇到错误:

  

clang:错误:没有这样的文件或目录:'DEBUG = 1'

我搜索项目设置的值,我看到该值也在“其他警告标志”中定义

我的问题是:

  1. 仅仅DEBUGDEBUG=1之间有什么区别?
  2. $(inherited)做什么?
  3. 它在其他警告标志上做了什么?

1 个答案:

答案 0 :(得分:1)

首先,如果您收到编译错误,那么您很可能将宏放回项目设置中的错误位置。请确保您已将其放入Debug部分Preprocessor Macros项下的Apple LLVM compiler x.x - Preprocessing配置分支。

对于您的其他问题:

  1. 第一个版本只是定义宏DEBUG所以它基本上是空的。您可以测试它是否存在,但不是很多。第二个将它设置为1,以便预处理器可以实际进行比较,如#if DEBUG && SHOULD_DIE_ON_ERROR,如果应用程序遇到某些验证错误,您可能会中止,但仅当SHOULD_DIE_ON_ERROR设置为1$(inherited) 1}}并且您正在调试模式下运行。
  2. {{1}}只会引入您从链中进一步继承的其他宏。因此,如果您的项目定义了一些项目并且您的目标定义了更多项目,那么目标也会获得项目的设置,而无需重新定义它们。
  3. 根本不应该影响警告标志。如果有的话,它确定你包含的头文件中的代码路径(比如cocoa框架),这些代码路径可能使用不同的实现,或者可能将调试信息添加到数据结构或其他任何内容。