【问题标题】:CMake - separating project configurations from target configurationsCMake - 将项目配置与目标配置分开
【发布时间】:2015-08-05 12:34:38
【问题描述】:

我有一个可执行文件,它支持两个渲染后端(GL 和 D3D),每个都在单独的静态库中实现。我在调试级别(例如调试、发布等)和渲染器上排列了项目配置,因此最终配置是(Debug_GL、Debug_D3D 等)。在我之前的question 中,我学习了如何创建每个配置的依赖项。

我现在的问题是我还有额外的静态库,它们不依赖于渲染器类型。当我通过设置CMAKE_CONFIGURATION_TYPES 创建上面的(CMake)项目配置时,这些静态库项目也会获得由渲染器类型排列的配置。我不希望这样,因为这些配置具有单独的对象/库目录等,但它们本质上是重复的。

我的主要关注点是为 Visual Studio 生成,因此理想情况下,生成的解决方案以及渲染器后端库将具有完整的排列组合,而非渲染器特定库将仅具有“调试级”配置。这在 CMake 中是否可行?

【问题讨论】:

  • 这些额外的静态库是在同一个项目中构建的吗?
  • 是的,这就是目标。

标签: visual-studio cmake


【解决方案1】:

整个项目的配置集全局。每个配置都构建在自己的目录中。例如,来自LIBRARY_OUTPUT_DIRECTORY属性的描述:

此属性指定应在其中构建库目标文件的目录。多配置生成器(VS、Xcode)将每个配置的子目录附加到指定目录。

换句话说,任何目标(例如,库)项目内构建的不能在不同配置之间共享

如果您希望某些目标有自己的配置集,您应该将它们移到另一个项目中。这种方法的缺点是很难在更改另一个项目的源代码的同时自动重建一个项目。

【讨论】:

  • 采用两个项目的方法,我会让一个项目使用include_external_msproject 将第二个项目的库包含到一个解决方案中?
  • 我不确定使用include_external_msproject 与配置有何关联。在我的回答中,我暗示使用find_projectExternalProject_add
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2022-01-06
  • 2018-11-18
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
相关资源
最近更新 更多