Aprende a probar tus ejercicios de C++ en Exercism
Cada ejercicio proporciona los tests unitarios y una receta de compilación con CMake. Tú aportas la implementación. Cada archivo de test está pensado para enlazarse con tu implementación y generar un ejecutable de consola que ejecuta los tests. Al ejecutar el ejecutable de tests, se imprime un mensaje por cada test que falla y se informa de un código de salida distinto de cero cuando los tests fallan.
Nota: Tu código se somete a los tests cada vez que compilas tu proyecto. Si tu código no pasa uno o varios tests pero es código C++ válido, se compilará igualmente.
Trabajar cada ejercicio es un proceso que consiste en:
Cada ejercicio incluye un archivo CMakeLists.txt junto con los tests
unitarios. Contiene la receta de CMake ya preparada que se encarga de la
compilación por ti. No deberías necesitar editar este archivo. La receta
proporcionada da por supuesto que tu implementación existe como un archivo de
cabecera y un archivo de código fuente con el nombre del ejercicio.
Por ejemplo, el ejercicio bob espera una implementación en bob.h
y bob.cpp. Para los ejercicios con guiones en el nombre, se da por
supuesto que los archivos de código fuente usan guiones bajos, así que
word-count espera word_count.h y word_count.cpp. Puede que
decidas que tu implementación es lo bastante sencilla como para vivir
enteramente en el archivo de cabecera, en cuyo caso puedes omitir el archivo
cpp.
Crea los archivos de tu implementación inicial antes de ejecutar CMake. Si
no tienes los archivos bob.h y bob.cpp cuando ejecutes
CMake para el ejercicio bob, CMake generará un error indicando que
no encuentra los archivos. Estos archivos pueden estar vacíos, pero deben existir.
Con esta receta, CMake puede generar un proyecto adecuado para tu entorno
ejecutando cmake -G con un generador adecuado y la ubicación del
directorio del ejercicio. CMake generará un script de compilación apropiado
para tu sistema operativo. Para mantener esos archivos generados separados del
código fuente de tu ejercicio, es habitual crear un directorio llamado build
que contenga estos archivos de compilación generados, además del código compilado. Así
mantendrás la carpeta de tu ejercicio ordenada y despejada.
Una vez que CMake ha creado el entorno de compilación, puedes compilar tu código con el comando adecuado para tu entorno:
make
make si usas la aplicación CLI de Exercism
A continuación se muestran ejemplos de cómo ejecutar CMake en distintos entornos.
El nombre del generador para CMake es Unix Makefiles.
Suponiendo que el ejercicio actual es bob y estamos en la carpeta del ejercicio:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
Este ejemplo muestra cómo crear archivos vacíos para la implementación antes de ejecutar CMake.
Simplemente escribe make en el directorio de compilación para compilar los tests. Esto debería
generar errores de compilación. Una vez corregidos los errores, make compilará y
ejecutará los tests.
Visual Studio tiene soporte nativo para proyectos CMake, así que no deberías necesitar instalar CMake por separado ni ejecutarlo fuera de Visual Studio. Sigue esta guía para configurar el proyecto CMake en Visual Studio.
El nombre del generador para CMake es Xcode.
Suponiendo que el ejercicio actual es bob y estamos en la carpeta del ejercicio:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
Este ejemplo genera los archivos de XCode para que puedas abrir el proyecto en XCode. Con el proyecto abierto en XCode, puede que necesites añadir otro target. Para un nuevo target, ve a File -> New -> Target en el menú, OS X \ Application \ Command Line Tool -> Next, selecciona C++ como lenguaje y proporciona un nombre para el target. Ejecuta el código usando el target.
Si tu terminal muestra un error Xcode x.x not supported, es muy probable que Xcode no esté instalado en tu máquina o que tu versión esté desactualizada.
Descarga e instala Xcode desde el App Store o desde este enlace.
Los errores similares a The CXX compiler identification is unknown probablemente se resuelvan siguiendo las instrucciones para instalar GCC o añadiendo otro target en Xcode como se explica en el párrafo anterior.
El nombre del generador para CMake es Unix Makefiles.
Suponiendo que el ejercicio actual es bob y estamos en la carpeta del ejercicio:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
En este ejemplo, sí creamos archivos vacíos para la implementación antes de ejecutar CMake, pero no creamos un directorio de compilación vacío.
Esto se debe a que la CLI de Exercism usa el archivo .exercism/metadata.json del directorio raíz para analizar los casos de test.
Simplemente escribe exercism test en el directorio raíz para compilar los tests. Esto debería generar errores de compilación.
Una vez corregidos los errores, ejecutar exercism test de nuevo compilará y ejecutará los tests usando la CLI de Exercism.