我有一个可执行文件,它支持两个渲染后端(GL和D3D),每个后端都在一个单独的静态库中实现。我在调试级别(例如,调试,发布等)和渲染器上置换了项目配置,因此最终配置是(Debug_GL,Debug_D3D等)。在我之前的question中,我学习了如何进行每个配置的依赖。
我现在的问题是我还有其他静态库,它们不依赖于渲染器类型。当我通过设置CMAKE_CONFIGURATION_TYPES
创建上面的(CMake)项目配置时,这些静态库项目也会获得由渲染器类型置换的配置。我不希望这样,因为这些配置具有单独的对象/库目录等,但它们基本上是重复的。
我的主要关注点是为Visual Studio生成,因此理想情况下,生成的解决方案以及渲染器后端库将具有完整的排列集,而非渲染器特定的库将只具有“调试级”配置。用CMake可以实现这个吗?
答案 0 :(得分:1)
整个项目的配置集是全局。每个配置都在自己的目录中构建。例如,来自LIBRARY_OUTPUT_DIRECTORY属性的描述:
此属性指定应在其中构建库目标文件的目录。多配置生成器(VS,Xcode)将每个配置子目录附加到指定目录。
换句话说,在项目中构建的任何目标(例如,库)无法在不同配置之间共享。
如果您希望某些目标具有自己的配置集,则应将它们移动到另一个项目中。这种方法的缺点是,当另一个项目的源更改时,很难使一个项目自动重建。