(如何)cmake配置在概念上与Visual-C ++项目文件有所不同?

时间:2011-10-19 13:50:55

标签: visual-c++ cmake projects-and-solutions

要从C ++源代码转换为二进制模块,过程大致如下:

set_of_source_files[a.cpp, b.cpp, ...] // conceptually, it doesn't matter where these are

          ||
          || Compiler  <- [compiler_settings]
          \/

set_of_object_files

          ||
          || Linker  <- [linker_settings]
          \/

binary module (dynamic library or executable)

现在,我知道 Visual Studio项目,他们

  • 定义一组源文件(目录结构和布局基本无关紧要/在项目文件中定义)
  • 为所有(可选每个)源文件定义编译器设置
  • 定义链接器设置
  • 定义生成输出文件的放置位置

不知道 cmake,但显然(),使用cmake配置的信息与放入{{的信息略有不同1}}文件。

“cmake配置”只是一个格式不同的“vcproj文件”还是存在概念差异?(除了显而易见的一个(我假设)我输入cmake配置的信息与平台无关。)

这个问题的一个替代方法是回答 - 在上面的上下文中 - 为什么/ if(?)当使用Visual-C ++ 编译Windows时,会切换到cmake。

1 个答案:

答案 0 :(得分:2)

Cmake是一个跨平台的制作 - 它从一组源文件开始,以及一组关于如何处理它们的相对抽象的指示。基于这些,它生成一组特定于平台的文件。如果指定Windows / Visual Studio作为目标,它可以/将生成一个vx [x] proj文件供您使用。

即使您只在Windows上使用Visual C ++,也可以可能,您可以从cmake中受益。显而易见的可能是,如果您想要定位许多不同版本的Visual Studio,并且能够为每个版本直接生成正确的文件,而不是为您想要支持的最旧版本生成文件,然后依赖于Visual Studio的升级功能将其转换为目标版本。

根据我对VS的升级能力(不是特别好)的经验,我认为可以/将是合理有效的使用。