¿Cómo se agrega un paso de compilación personalizado a un proyecto basado en automake en KDevelop?

StackOverflow https://stackoverflow.com/questions/107160

  •  01-07-2019
  •  | 
  •  

Pregunta

Recientemente comencé a trabajar en un proyecto de codificación personal usando C++ y KDevelop.Aunque comencé simplemente pirateando, creo que será mejor a largo plazo si configuro un conjunto de pruebas unitarias adecuado antes de ir demasiado lejos.Creé un ejecutable de ejecución de pruebas separado como un subproyecto y las pruebas que le agregué parecen funcionar correctamente.Hasta ahora, éxito.

Sin embargo, realmente me gustaría ejecutar mis pruebas unitarias cada vez que construyo, no solo cuando las ejecuto explícitamente.Esto será especialmente cierto a medida que divida el desorden que he creado en bibliotecas convenientes, cada una de las cuales probablemente tendrá su propio ejecutable de prueba.En lugar de ejecutarlos todos manualmente, me gustaría ejecutarlos como paso final en mi proceso de compilación.Revisé todas las opciones en el menú del proyecto y en el administrador de creación automática, pero no puedo entender cómo configurar esto.

Me imagino que esto probablemente podría hacerse editando el archivo MAKE a mano.Desafortunadamente, mi makefile-fu es un poco débil y también temo que KDevelop pueda sobrescribir cualquier cambio que haga a mano la próxima vez que cambie algo a través del IDE.Por lo tanto, si hay una opción sobre cómo hacer esto a través del propio KDevelop, preferiría ir por ese camino.

¿Alguien sabe cómo puedo hacer que KDevelop ejecute mis ejecutables de prueba como parte del proceso de compilación?¡Gracias!

(No estoy 100% vinculado a KDevelop.Si KDevelop no puede hacer esto, o si hay un IDE que lo hace mucho más fácil, me podrían convencer para cambiar).

¿Fue útil?

Solución

Aunque tú podría Manipule el objetivo `Make` predeterminado para ejecutar sus pruebas, generalmente no se recomienda, porque cada invocación de

make

ejecutaría todas las pruebas.En su lugar, debe usar el objetivo "Verificar", que es un cuasi-estándar aceptado entre los paquetes de software.Al hacer eso, las pruebas solo se inician cuando corres

make check

Luego puede configurar fácilmente Kdevelop para ejecutar "hacer cheque" en lugar de solo "hacer".

Dado que está utilizando Automake (a través de KDEVOLED), no necesita escribir el objetivo de "verificar" usted mismo.En su lugar, simplemente edite su `Makefile.am` y establezca algunas variables:

TESTS = ...

Por favor, eche un vistazo adocumentación de automake, "Soporte para conjuntos de pruebas"para mayor información.

Otros consejos

Lo tengo funcionando de esta manera:

$ cat src/base64.c
//code to be tested
int encode64(...) { ... }

#ifdef UNITTEST
#include <assert.h>
int main(int argc, char* argv[])
{
  assert( encode64(...) == 0 );
  return 0;
}
#endif //UNITTEST
/* end file.c */

$ cat src/Makefile.am
...
check_PROGRAMS = base64-test
base64_test_SOURCES = base64.c
base64_test_CPPFLAGS = -I../include -DUNITTEST
TESTS = base64-test

A hacer cheque compilaría src/base64-test y lo ejecutaría:

$ make check
...
PASS: base64-test
==================
All 1 tests passed
==================
...

Ahora estoy intentando encapsularlo todo como una macro m4 para usarla así:

MAKE_UNITTEST(base64.c)

lo que debería producir algo como la solución anterior.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top