Doxygen не может обнаружить NS_ENUM в target-c
Я использую Doxygen для документирования API, написанного на Objective-C.
Doyxygen не в состоянии понять NS_ENUM typedef.
Я нашел это решение, но оно не сработало для меня.
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = NS_ENUM(x,y)=y
Regards,
Dimitri
Это мой входной файл:
/**
* Represent the possible states.
*/
typedef NS_ENUM(NSInteger, ABEnumType)
{
/**
* State A.
*/
StateA = 0,
/**
* State B.
*/
StateB
};
Это вывод, который я получаю:
Preprocessing /src/ABEnumType.h...
error: /src/ABEnumType.h:17:17: error: C++ requires a type specifier for all declarations [clang]
error: /src/ABEnumType.h:17:28: error: unknown type name 'ABEnumType' [clang]
error: /src/ABEnumType.h:18:1: error: function definition is not allowed here [clang]
error: /src/ABEnumType.h:17:9: error: C++ requires a type specifier for all declarations [clang]
Parsing file /src/ABEnumType.h...
3 ответа
У нас работали следующие настройки:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = NS_ENUM(x,y)=enum y
При этом мы видим все структуры NS_ENUM, обнаруженные в нашей документации, сгенерированной doxygen
Если Doxygen терпит неудачу, вы всегда можете попробовать HeaderDocs.
РЕДАКТИРОВАТЬ: я пробовал headerdocs с тестовым классом, и я думаю, что он обеспечивает хорошую поддержку NS_ENUM.
//
// VLTTestClass.h
// VPNLoginTest
//
#import <Foundation/Foundation.h>
/*!
Test class type description.
*/
typedef NS_ENUM(NSInteger, VLTestClassType) {
/*!
Description for type 1.
*/
VLTestClassType1,
/*!
Description for type 2.
*/
VLTestClassType2
};
/*!
Description for test class
*/
@interface VLTTestClass : NSObject
@end
Вот заголовок doc2html: http://pastebin.com/q6RsR0tU
Ответ Гюриска помог, но нам также нужно было включить EXTRACT_ALL
, Поэтому у нас работают следующие настройки:
EXTRACT_ALL = YES
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = NS_ENUM(x,y)=enum y