12.07.2015 Views

Tutorial de CMake - csrg

Tutorial de CMake - csrg

Tutorial de CMake - csrg

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Dado que supongo que usáis un sistema <strong>de</strong> repositorio para confirmar queel <strong>CMake</strong>Lists.txt <strong>de</strong> <strong>de</strong>sarrollo y <strong>de</strong> implantación coincidan, el convenienteespecificar el modo <strong>de</strong> compilación <strong>de</strong>s<strong>de</strong> la linea <strong>de</strong> comandos (al menos en lasfases iniciales d <strong>de</strong>sarrollo).A continuación muestro algunos trucos que pue<strong>de</strong>n seros interesantes.11.1 Activar las instrucciones assert en modo ReleaseA pesar <strong>de</strong> lo comentado anteriormente, es posible hacer que las instruccionesassert funcionen en modo Release.# d e f i n e macro ∗DEBUG macro en modo ReleaseSTRING(TOLOWER ${CMAKE BUILD TYPE} CMAKE BUILD TYPE TOLOWER)i f (CMAKE BUILD TYPE TOLOWER MATCHES r e l e a s e )s e t (NDEBUG 1)e n d i f (CMAKE BUILD TYPE TOLOWER MATCHES r e l e a s e )11.2 Definir vuestro propio modoEn este ejemplo <strong>de</strong>fino un modo Profile, en el que se activará la directiva “-pg”necesaria para po<strong>de</strong>r usar la aplicación <strong>de</strong> profile <strong>de</strong> C++ (si no sabeis a lo queme refiero, <strong>de</strong>beríais echarle un vistado al programa cprof ).# d e f i n e macro ∗DEBUG macro en modo ReleaseSTRING(TOLOWER ${CMAKE BUILD TYPE} CMAKE BUILD TYPE TOLOWER)IF (CMAKE BUILD TYPE TOLOWER MATCHES p r o f i l e )SET (GPROF FLAGS ”−pg ”)SET (FLAGS ”${SHARED FLAGS} −Wall −O −DNDEBUG ${GPROF FLAGS}”)SET (CMAKE CXX FLAGS ”${FLAGS} ${GPROF FLAGS}”)SET (CMAKE EXE LINKER FLAGS ”${GPROF FLAGS}”)MESSAGE(STATUS ” P r o f i l e ”)ENDIF (CMAKE BUILD TYPE TOLOWER MATCHES p r o f i l e )11.3 Activas todos los avisos <strong>de</strong> compilaciónExisten una serie <strong>de</strong> directivas que indican al compilador que active todos losposibles mensajes <strong>de</strong> advertencia (warnings), que pue<strong>de</strong>n utilizarse en todos losmodos. Lamentablemente, no se especifica por <strong>de</strong>fecto. Para activarlo se pue<strong>de</strong>utilizar la directiva:L• SET(CMAKE CXX FLAGS “-Wall”) para C++.• SET(CMAKE C FLAGS “-Wall”) para ansi C.Otra opción más portable sería:• ADD DEFINITIONS(“-Wall”), pero en el caso <strong>de</strong> que queramos <strong>de</strong>finirdirectivas distintas para C y para C++ tendríamos que usar las variablesanteriores).13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!