2010-09-06 13 views
7

Quiero generar un proyecto Eclipse CDT con CMake donde el proyecto Eclipse resultante contiene los tipos de compilación definidos como configuraciones de compilación seleccionables desde el IDE.Configuraciones de compilación CMake Eclipse

Por ejemplo:

if(CMAKE_CONFIGURATION_TYPES) 
    set(CMAKE_CONFIGURATION_TYPES PRODUCT_A PRODUCT_B) 
    set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING 
    "Reset the configurations to what we need" 
    FORCE) 
endif() 

SET(CMAKE_C_FLAGS_PRODUCT_A 
    "-DF_ENABLE_FEATURE_A -DF_ENABLE_FEATURE_B 
    ) 

SET(CMAKE_C_FLAGS_PRODUCT_B 
    "-DF_ENABLE_FEATURE_A 
    ) 

Utilizando el enfoque anterior, un generador de proyecto de Visual Studio da a construir configuriatons para seleccionar PRODUCT_A product_B y destaca el código activo correctamente.

Sin embargo, si genero un proyecto de Eclipse, la configuración de compilación no está allí.

¿Cómo hago para que esto funcione en proyectos de Eclipse?

Respuesta

4

Respuesta corta: no es así.

El generador Eclipse CDT crea una envoltura alrededor de los Makefiles generados. Los generadores basados ​​en archivos Makefile no pueden ser multiconfigurados.

Vas a tener que usar árboles binarios separados (tenga en cuenta que ambos pueden referirse de nuevo al mismo árbol de código fuente), y usar algo como opciones para activar el producto A y/o el producto B:

OPTION(PRODUCT_A "Build product A." OFF) 
OPTION(PRODUCT_B "Build product B." OFF) 
IF(PRODUCT_A AND PRODUCT_B) 
    MESSAGE(SEND_ERROR "Cannot build both product A and B at the same time.") 
ENDIF() 

IF(PRODUCT_A) 
    SET(CMAKE_C_FLAGS 
    "${CMAKE_C_FLAGS} -DF_ENABLE_FEATURE_A -DF_ENABLE_FEATURE_B" 
) 
ENDIF() 

IF(PRODUCT_B) 
    SET(CMAKE_C_FLAGS 
    "${CMAKE_C_FLAGS} -DF_ENABLE_FEATURE_A" 
) 
ENDIF() 
Cuestiones relacionadas