Конфигурации сборки CMake Eclipse - PullRequest
7 голосов
/ 07 сентября 2010

Я хочу сгенерировать проект Eclipse CDT с помощью CMake, в котором итоговый проект Eclipse содержит определенные типы сборки в качестве выбираемых конфигураций сборки из IDE.

Например:

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
    )

Используя описанный выше подход, генератор проектов Visual Studio дает мне конфигурацию сборки для выбора product_A product_B и правильно выделяет активный код.

Если, однако, я сгенерирую проект Eclipse, конфигурации сборки там не будет.

Как заставить это работать для проектов Eclipse?

1 Ответ

4 голосов
/ 04 ноября 2011

Краткий ответ: нет.

Генератор Eclipse CDT создает оболочку вокруг сгенерированных Make-файлов.Генераторы на основе Makefile нельзя сделать мультиконфигурированными.

Вам придется использовать отдельные двоичные деревья (обратите внимание, что оба могут ссылаться на одно и то же дерево исходных текстов) и использовать что-то вроде параметров длявключить продукт A и / или продукт 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...