CMake Eclipse构建配置

Oli*_*ver 7 eclipse build cmake

我想用CMake生成一个Eclipse CDT项目,其中生成的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
    )
Run Code Online (Sandbox Code Playgroud)

使用上述方法,Visual Studio项目生成器为我提供了构建配置选择product_A product_B并正确突出显示活动代码.

但是,如果我生成Eclipse项目,那么构建配置就不存在了.

如何使这个项目适用于Eclipse项目?

Bri*_*ett 4

简短的回答:你不知道。

Eclipse CDT 生成器在生成的 Makefile 周围创建一个包装器。基于 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()
Run Code Online (Sandbox Code Playgroud)