2010-09-06 5 views
7

Ich möchte ein Eclipse-CDT-Projekt mit CMake erstellen, in dem das resultierende Eclipse-Projekt die definierten Build-Typen als auswählbare Build-Konfigurationen innerhalb der IDE enthält.CMake Eclipse Build-Konfigurationen

Zum Beispiel:

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 
    ) 

den oben beschriebenen Ansatz verwenden, ein Visual Studio Projektgenerator gibt mir configuriatons bauen richtig PRODUCT_A product_B und hebt den aktiven Code auszuwählen.

Wenn ich jedoch ein Eclipse-Projekt generieren, ist die Build-Konfiguration nicht vorhanden.

Wie bekomme ich das für Eclipse-Projekte?

Antwort

4

Kurze Antwort: Sie nicht.

Der Eclipse CDT-Generator erstellt einen Wrapper um generierte Makefiles. Makefile-basierte Generatoren können nicht als Mehrfachkonfiguration konfiguriert werden.

Sie werden getrennte binäre Bäume verwenden (beachten Sie, dass beide wieder auf den gleichen Quellbaum verweisen können) und so etwas wie Optionen verwenden Produkte A und/oder Produkt B zu aktivieren:

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() 
Verwandte Themen