2012-01-17 7 views
5

Ho un programma C++ che gira su un sistema embedded. Quando il cliente incontra un problema, mi invia un file di registro. E sarebbe bello vedere esattamente quando il binario è stato compilato nel registro. Quindi, attualmente io uso questo semplice ma molto inefficace metodo:come implementare funzionalità simili a linux/proc/version in un programma C++?

...

const std::string APP_BUILD = "2012.01.17.18:28"; 

int main() 
{ 
    std::cout << "Was built: " << APP_BUILT << std::endl; 
} 

Quello che vorrei fare è impostare APP_BUILD automaticamente durante la compilazione. So che Linux ha una variabile/proc/version che può essere letta per determinare il tempo di costruzione. Le mie letture

cat /proc/version 
Linux version 2.6.38-13-generic ([email protected]) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)) #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 

Questo può essere fatto? (Sto costruendo la mia app in Linux).

+1

Controllare i GCC [macro predefinite] (http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html), alcuni dati che si desidera vengano trovati lì. –

+0

Se si utilizza un sistema di controllo della versione (e si dovrebbe), probabilmente si desidera incorporare anche una stringa che identifichi in modo univoco la versione specifica. –

+0

Sì, sto usando Mercurial. C'è un modo per farlo? –

risposta

9

Sembra che tu stia cercando i macro __DATE__ e . Queste macro standard sono disponibili sia in C che in C++.

Vedere, ad esempio, gcc manual.

+0

Grazie! Totalmente dimenticato. –

Problemi correlati