2012-05-21 14 views
7

Bazı C++ kod tabanım var, doxygen ile belgelenmiş ve GNU marka ile oluşturulmuştur. Versiyon bilgiler gibi bir şey var burada, makefile'ında merkezileştirilir: Benim makefile olarak 1.2.3.4Makro içeriğinin genişletilmesi Doxygen açıklaması için yazılım sürümü çıktı

=

VERSION, CFLAGS eklemek aşağıdakileri tanımlayın:

CFLAGSın + = -DAPP_VERSION = $ (VERSİYONU)

Bu, sürümdeki kodu şu şekilde almamı sağlar:.2.3.4

Ben dışa başardı

yazılımının

Güncel sürümü: Şimdi

#define STR_EXPAND(tok) #tok 
#define STR(tok) STR_EXPAND(tok) 
int main() 
{ 
    cout << "software version is << STR(APP_VERSION) << endl; 
} 
, ne istiyoruz doxygen üretilen html dosyalarında bu sahip olmaktır aşağıdaki gibi doxygen yapılandırma dosyasına makefile değişkeni: ( düzenleme: doxygen, makefile'dan 'make-doc' hedefi ile çağrılır)

ÖNTANIMLI = APP_VERSION = $ (VERSİYONU)

Ama sonra, böyle doxygen \ anasayfa komut şey denerseniz, bu başarısız (tabii ki), makro adları genişletilmiş alamadım çünkü yorumlarda ...

/** 
\mainpage this is the doc 
Current version is $(APP_VERSION) -- or -- ... is APP_VERSION 
*/ 

Sorular

  • bir şekilde biliyor musunuz Bu makro, doxygen yorumlarında "genişliyor" mu? Bu, makefile'deki yorumu tutan dosyadaki bazı sed işleme ile yapılabilir, ancak belki bu doğrudan doxygen ile çözülebilir?

  • Diğer projeler, sürüm kimliğinin bir dosyada benzersiz şekilde tanımlandığı şekilde, sürüm oluşturma işlemini nasıl gerçekleştirir (VCS'nin sağladığı otomatik sürüm oluşturma aracının yanı sıra), böylece hem yazılım oluşturma sistemi hem de belge tarafından getirilebilir sistem kur. İlgili

: How to display a defined value

cevap

2

Benim bu görebilirsiniz Eğer ++

/*! \mainpage Project $(project_name) Lorem ipsum dolor 

C şu açıklamaları kullanmasına izin Will

project_name=FooBar 
export project_name 
all: 
    doxygen Doxyfile 

ile yani çok basit bir makyaj dosyasının make "ihracat" işlevi kullanmak gerekir Büyük bir ihracat kümesine sahip bir PITA olmak ama bunu yapmanın oldukça basit bir yolu. Alternatif olarak, Makefile'nizi çok fazla kirletmemek için, içindeki tüm ihracatla birlikte ayrı bir BASH komut dosyasından doxygen'i çalıştırabilirsiniz.

+0

Sadece bu soruya geri dönüp (biraz gecikmeyle birlikte) bunun farkına varıyorum. tam olarak aradığım şey! O zaman ben hiç fark etmedim. Cevabı kabul etmek. – kebs

2

commands manual$(VARIABLE) ortam değişkenleri genişletir göstermektedir. Belki de versiyonunuzu bir ortam değişkenine koyabilirsiniz?

+0

Elbette, ancak nokta şudur: Doxygen üretilen dosyalardaki değerini nasıl basarım? Ya da belki senin cevabını yanlış anladım, açıklayabilir misin? – kebs

+0

Windows için Doxygen 1.8.6 ile çalıştım. Toplu dosyasında \t : set DOC_VERSION = MyPage.dox yılında 1.0 : Versiyon: $ (DOC_VERSION) –

3

Yorumlardaki makrolar genellikle genişletilmez (bkz. Örneğin, this answer). Bu, doxygen için benzersiz değildir ve PREDEFINED yapılandırma seçeneğini kullanarak bunu yapmanın bir yolunu düşünemiyorum.

Sorudaki gibi, sed kullanabilirsiniz, this answer numaralı üçüncü madde işaretine bakın.Örneğin, (Bunun yerine tüm kaynak dosyaları işleme yerine, INPUT_FILTER ile işlemek için dosyaları belirtebilirsiniz) tüm kaynak dosyaları 1.0 ile VERSION tüm örneklerini yerini alacak aşağıdaki

INPUT_FILTER = "sed -e 's/VERSION/1.0/'" 

kullanarak. VERSION'un her yerde genişletilmesini istemeyebilirsiniz, bu nedenle belki de $(VERSION) ve sed bu belirteci kullanmanız en iyisidir. Ayrıca, sürüm numaranızı makefile ve doxygen konfigürasyon dosyanızdan almanın bir yoluna ihtiyacınız olacaktır. Bu başka bir sed ile yapılabilir.

Son madde işaret noktanızı ele almak için, doxygen, her dosyanın sürüm numarasını belirlemek için FILE_VERSION_FILTER yapılandırma seçeneğine sahiptir. Bunu kullanarak, her dosya sayfasının üst kısmındaki bazı sürüm bilgilerini (FILE_VERSION_FILTER'da belirtilen komuttan standart olarak yazdırılmış olan her şey) yazdırın. Dokümantasyonda, birkaç farklı versiyon kontrol sistemi kullanarak versiyon numarasını alma örnekleri vardır. Ayrıca, here sürüm bilgilerini ayıklamak için git ve doxygen nasıl kullanılacağını açıklayan bir sayfadır.

Bu yapılandırma seçeneğiyle ilgili tek dezavantaj, dosya sürümü bilgilerinin son belgede nerede görünmesi gerektiğini nasıl bileceğimi bilmem. Bir düzen dosyasını kullanabileceğinizi tahmin ediyorum: change the layout of pages'u kabul ettiğinizi varsayalım, ama bunu hiç yapmadım ve ana sayfada sürüm bilgisini eklemek için bunu kullanmanın ne kadar kolay olduğunu bilmiyorum.

+0

Aslında sürüm numarası da benzersiz doxygen yorumlarda bulunduğu, aklımda vardı neydi bulunduğu yerdeki "head/header" kaynağını doğrudan 'sed' haline getirmek. Ancak, tüm dosyaları otomatik olarak sağlanan dolaşım mekanizmasından geçirme fikri de iyi bir fikirdir. Ve makefile doxygen yapılandırma dosyasından sürüm numarasını almak için, bu ile yapılır: PREDEFINED = APP_VERSION = $ (VERSION) – kebs