2011-10-21 19 views
19

Quiero compilar el mismo archivo fuente .cpp en dos ejecutables de destino diferentes y estoy usando cmake. Uno tendrá un código de instrumentación y el otro no. De esa forma puedo comparar la sobrecarga de la instrumentación.Compilar el mismo archivo con diferentes banderas usando CMAKE

Tengo el código de instrumentación separado con #ifdefs, así que quiero definir un valor usando el distintivo -D. Veo que es posible con

add_definitions(-DINSTRUMENT) 

Pero parece que esto se aplica a todos los ejecutables creados en ese directorio. Me pregunto si existe una buena manera de establecer la definición solo para un objetivo ejecutable específico.

Respuesta

21

Usted puede establecer la propiedad COMPILE_DEFINITIONS de uno de los objetivos de tener específicos de la diana definiciones:

set_target_properties (instrumented_target PROPERTIES COMPILE_DEFINITIONS "INSTRUMENT") 

Actualización:

A partir de CMake 2.8.11 también se puede utilizar para la target_compile_definitions mismo propósito.

+0

gracias que funciona. –

+5

Esa propiedad también está disponible por archivo de origen, usando "set_property (SOURCE source_file_name PROPERTY COMPILITY_DEFINITIONS ...)" – DLRdave

+1

@DLRdave, creo que debe tenerse en cuenta que el uso de 'set_target_properties()' ya no sobrescribirá las definiciones agregado por 'add_definitions()' definido anteriormente. (Estaba preocupado por esto hasta que ejecuté 'make VERBOSE = 1') – mpontillo

Cuestiones relacionadas