2010-03-01 21 views
18

'da tanımlanmaktadır. Önişlemci tanımlarını Doxygen'de belgelemek mümkün mü? Bunu bir değişken ya da işlev gibi yapabilmeyi bekledim, ancak Doxygen çıktısı tanımlamaya ilişkin belgeleri "kaybetti" gibi görünüyor ve tanımlamanın kendisini de içermiyor. Dokümantasyon önişlemcisi, Doxygen

aşağıdaki

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

ve

/**@def TEST_DEFINE 

    My Preprocessor Macro. 
*/ 
#define TEST_DEFINE(x) (x*x) 

Ben de bir grup (denenmiş defgroup, addtogroup ve içgrup) içinde bunları koyarak çalıştı

yerine sadece "dosya kapsamı" da ancak çalıştı hiçbir etkisi olmamıştır (gruptaki diğer öğeler amaçlandığı gibi belgelenmiş olsa da).

Çeşitli Doxygen seçeneklerini inceledim, ancak tanımların belgelenmesini sağlayacak (veya önleyecek) bir şey göremedim.

cevap

25

Evet, bu mümkün kontrol etmeyi unutmayın EXTRACT_ALL kullanmadan bunu yapmanın daha zarif bir şekilde olabilir. Doxygen documentation diyor ki:

onlar tanımlandıkları dosyayı belgelemek zorundadır küresel nesneler (fonksiyonlar, typedefs, enum, makrolar, vs), belgelemek için. Başka bir deyişle, en azından bu dosyada bir

/*! \file */

veya

/** @file */

çizgi olmalıdır.

Sen @defgroup, @addtogroup ve @ingroup onlar ayrı dosyalarda (ayrıntılar için belgelere here bakınız) görünse bile, aynı modüle ilgili öğeleri koymak için kullanabilirsiniz. İşte (Doxygen 1.6.3 kullanarak) benim için çalışan bir asgari örnek:

Doxyfile:

# Empty file. 

Test.h:

/** @file */ 

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

/** 
* @defgroup TEST_GROUP Test Group 
* 
* @{ 
*/ 

/** Test AAA documentation. */ 
#define TEST_AAA (1) 
/** Test BBB documentation. */ 
#define TEST_BBB (2) 
/** Test CCC documentation. */ 
#define TEST_CCC (3) 
/** @} */ 

Foo.h:

/** @file */ 

/** 
* @addtogroup TEST_GROUP 
* 
* @{ 
*/ 

/** @brief My Class. */  
class Foo { 
    public: 
     void method(); 
}; 

/** @} */ 

Bar.h: Bu durumda

/** @file */ 

/** 
* @ingroup TEST_GROUP 
* My Function. 
*/ 
void Bar(); 

, TEST_DEFINE dokümantasyon Testi görünür.h HTML çıktısında Dosyalar sekmesi altında giriş ve TEST_AAA vb tanımları sınıf Foo ve işlev Bar ile sekme birlikte Modülleri Testi Grubu altında görünür.

/** @file Test.h */ 

sonra bu dosyanın adıyla aynı olmalıdır: nota

Bir şey @file komut, örneğin sonra dosya adını koyarsanız olmasıdır. Yoksa, dosyadaki öğeler için doküman oluşturulmaz.

@file komutlarını eklemek istemiyorsanız alternatif bir çözüm, Doxyfile öğesinde EXTRACT_ALL = YES değerini belirlemektir.

Umarım bu yardımcı olur! Benim "C" dosyalarında

+0

Bu, onları bir grup/modül içine koymanın bir yolu olmadığı anlamına mı geliyor? Yani gerçekten yapmaya çalıştığım fonksiyonlar/sınıflar/vb ile ilişkili oldukları için (orada da birkaç dosyaya yayılmış). –

+0

Merhaba Yangın Lancer, – ChrisN

+0

cevabımla gruplandırmayla ilgili bazı ayrıntılar ekledim. Tamam, bir addtogroup veya defgroup bloğunda çalıştım. ingroup tanımlamak bir yerde tanımlamak gibi görünüyor (defgroup grup ana docs ile bir .cpp içinde ve başlıktaki tanımları hariç her şey grupta iyi oluyor). Ben bir tür hata olması gerektiğini tahmin ediyorum Doxygens bölümünde? –

3

, böyle bir açıklama biçimi ve #define satırını kullanın:

/** @brief Number of milli-seconds to wait*/ 
#define kTimeoutMSec (2) 

Benim html belgeleri Belirttiğim belgeleri içeren sonunda yoktur. (Dosyanın en üstünde @File var ve EXTRACT_ALL = YES)

0

Önceki yanıtlara ek olarak, Doxyfile'da ENABLE_PREPROCESSING=YES olması da gerekiyor.