Archive for ‘Programmazione’

16 giugno 2010

Gummi: editor LaTeX per Gnome/Gtk

di morpheus1820

http://gummi.midnightcoding.org/

Semplice (e simpatico) editor LaTeX scritto in python basato sulla libreria gtk. Sul sito sono disponibili pacchetti precompilati per varie distribuzioni.

Permette di avere a lato dello schermo un preview in tempo reale, senza bisogno di ricompilare il codice; mancano alcune features desiderabili come l’inserimento di simboli e formule.

25 gennaio 2010

Documentazione automatica del codice con Doxygen (HowTo)

di morpheus1820

Doxygen è un programma che permette di generare una documentazione automatica di codice in linguaggio C++, in modo abbastanza semplice. Per prima cosa installare Doxygen:

sudo apt-get install doxygen

Nella cartella principale del progetto C++ digitare:

doxygen -g <nomefile>

in questo modo si crea il file di configurazione di default <nomefile>. Non è necessario editare tutti i parametri, i più importanti sono:

PROJECT_NAME     = si commenta da sè
OUTPUT_DIRECTORY = cartella in cui generare la documentazione
INPUT            = percorso del codice  sorgente
FILE_PATTERNS    = Estensioni da considerare, per esempio .h,.cpp, .cc ecc...

A questo punto è possibile generare la documentazione in qualsiasi momento digitando

doxygen <nomefile>

Vediamo adesso come inserire nel codice la descrizione di classi, metodi, e attributi:

All’ inizio di ogni file

/*
 @file    fileName.cc .cpp .h ecc ecc ecc
 @author  name, mail
 @version 1.0
 */

Prima della dichiarazione di una classe:

/** Descrizione classe...
@code
... eventuale codice di esempio ...
 @endcode
 */

Prima di ogni metodo (o ridefinizione o template):

/**
Descrizione metodo...
@param  a parametro 1
@param  b parametro 2
@return valore di ritorno
@throws  eccezioni...
*/

Prima di ogni attributo:

/** descrizione */

La documentazione verrà generata in formato html nella cartella “html”.

2 aprile 2009

CMake

di Spinus
Ho iniziato da poco ad usare CMake e mi sono subito affezionato 🙂
Cos’è CMake?
E’ un tool che permette di generare i Makefiles per un progetto C/C++.
Ma allora non è più comodo usare make?
Sì, ma CMake è cross-platform, quindi permette di generare oltre ai Makefile Unix, anche Makefile per MinGW e, addirittura, può creare i .vcproject per Visual Studio!
Quindi se il progetto che si sta scrivendo utilizza librerie portabili, basta scrivere le regole di generazione poi digitare
cmake .
  • sotto Unix verrà generato un Makefile
  • sotto Windows verrà generato un progetto per Visual Studio
    • oppure un Makefile per MinGW se si utilizza il comando
    • cmake -G”MinGW Makefiles” .
Come si scrivono le regole?
Ecco un semplice esempio: il progetto chiamato esempio è costituito dal file codice.cpp

#nome che identifica il progetto

project(esempio)


#directory dove il compilatore deve cercare i sorgenti

include_directories (${esempio_SOURCE_DIR})

#flag del compilatore C++

SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -Wall -DDEBUG”)

#regola che specifica il nome dell’eseguibile e che file utilizzare per compilarlo

add_executable (esempio codice.cpp)

Per esempi più complessi e interessanti rimando alla documentazione ufficiale di CMake

Articolo aggiornato – Data pubblicazione: Feb 21, 2008 @ 23:04

Ho scoperto l’esistenza di CPack, che permette di generare pacchetti per distribuire i binari in molti formati tar/DEB/RPM utilizzando gli stessi concetti di CMake; non ho ancora avuto tempo di provarlo, ma credo possa rivelarsi molto utile!
http://www.cmake.org/Wiki/CMake:CPackPackageGenerators

15 maggio 2008

Java Jni e MinGW

di Spinus

Per esigenze lavorative mi sono scontrato con Jni, che permette a codice Java di chiamare o di essere chiamato da applicazioni native (scritte in C o C++).
Il procedimento per scrivere una classe che utilizza metodi nativi è un po’ macchinoso, ma è abbastanza semplice:

  • si scrive una classe Java che contiene lo scheletro dei  metodi che dovranno essere eseguiti (questi metodi devono essere preceduti dalla keyword native)
  • si compila la classe:
    javac nomeclasse.java
  • si crea l’header che contiene i prototipi delle funzioni:
    javah -jni nomeclasse
  • si implementano i metodi (aggiungendo tutte le librerie necessarie)
  • si compila il file sorgente e si crea una dll:
    gcc -I"C:\Program Files\Java\jdk1.6.0_02\include" -I"C:\Program Files\Java\jdk1.6.0_02\include\win32" -c nome_scheletro_generato -o nome_file_dll.o
    gcc -shared -Wl,--kill-at -o nome_file_dll.dll nome_file_dll.o eventuale_file.lib
  • si importa la dll nella classe java e da quel momento i metodi potranno essere invocati come fossero metodi di una qualsiasi classe java:static
    System.loadLibrary ("nome_file_dll");

E MinGW cosa centra? Ho avuto un piccolo problema utilizzando MinGW, perché il loader di Java non ne voleva sapere di caricare la dll che avevo creato…dopo un po’ di hacking ho scoperto che MinGW usava un name mangling diverso da quello che si aspettava il loader, quindi ho dovuto aggiungere l’opzione -Wl,–kill-at (per una spiegazione più approfondita vedere i link in nota).

P.S. ho testato questa guida sotto Windows, ma con le opportune modifiche si può utilizzare anche sotto Linux, in questo caso, però, bisognerà controllare il metodo di chiamata di default di gcc (_stdcall)

Riferimenti :
http://www.javaworld.com/javaworld/javatips/jw-javatip23.html

http://www.willus.com/mingw/yongweiwu_stdcall.html

http://forum.java.sun.com/thread.jspa?threadID=5200233

6 marzo 2008

CMake e Windows

di Spinus

Avete seguito la breve guida su CMake e adesso volete compilare il vostro programma sotto Windows, ma come fare senza installare pesanti programmoni per sviluppare (detti anche IDE) ?

E’ molto semplice, basta usare MinGW!

Come installo MinGW?

Dalla pagina di download di MinGW scaricare MinGW Automated Installer che si occuperà di scaricare tutte gli archivi necessari (selezionare i linguaggi che si vogliono utilizzare e mingw make)

E il debugger?

La soluzione più semplice è installare la versione di GDB disponibile sul sito di MinGW

Nota: scaricare sempre la versione “current release”, così si è sicuri di utilizzare versioni stabili.

Una volta installati i programmi necessari non resta che aggiungere alla variabile d’ambiente PATH, il percorso contentente gli eseguibili di MinGW: (aggiongere dir)

Come compilare?

Creare il makefile con il comando

cmake -G”MinGW Makefiles” .

compilare utilizzando il comando make

Gdb non è molto comodo? Come posso debuggare in modo più semplice?

In questo caso bisogna installare Eclipse o un altro IDE che supporti i makefile di MinGW e Gdb!

Importare i sorgenti in Eclipse si può creare un progetto make C/C++ e importare “da filesystem” i file che compongono il programma da compilare (probabilmente ci sarà qualche settaggio da rifinire).
Per debuggare il programma basterà creare una configurazione di debug e impostare come debugger Gdb o mingw debugger e, poi, sarà sufficiente impostare i breakpoint voluti e far partire l’esecuzione!

P.S. questa guida è un bozza, ho seguito le procedure qui descritte e tutto funziona, ma quando ho tempo proverò su un altro pc per assicurarmi di non aver dimenticato nulla!

UPDATE: Esiste un frontend grafico per gdb che funziona sotto windows: si chiama insight. Per utilizzarlo basta scaricare mingw-insight-6.3.exe (o altre versioni) e scompattarlo nella directory di MingGW. Insight contiene tra l’altro anche gdb.

Io l’ho provato ed è molto pratico!