c++ - CMake 和不同版本的 Visual Studio

标签 c++ visual-studio cmake clion multiplatform

我实际上正在编写一个库,我愿意让它成为多平台的。我已经使用了多平台依赖项(主要是提升)并且我已经开始使用 CMake。

过去几个月我一直在使用 CLion,虽然它是一个非常棒的 IDE,但在 Windows 上使用它非常复杂,因为它需要 MinGW 或 Cygwin。直到那时我一直在使用 Cygwin,因为 Unix 的仿真让我满意,但是自从上次更新以来,boost 在它上面完全无法使用。

我认为对我来说最好的办法是重新使用 Visual Studio。但是如何将它与 CMake 一起使用呢? 我的库需要部署在多个版本的VS下(从VS2013开始,一直到2015)

到目前为止,我一直在做的是每次添加文件时都重新生成项目,但我发现这个解决方案非常低效,正如您猜到的那样。 我还需要能够编译到不同的位置,具体取决于编译器。例如:

  • 包括
  • 图书馆
    • VS2013-x64
      • 调试
      • 发布
    • VS2013-x86
      • 调试
      • 发布
    • VS2015-x64
      • 调试
      • 发布
    • VS2015-x86
      • 调试
      • 发布
  • 来源

可以用 CMake 处理吗?如果是这样,怎么做?

最佳答案

只要在运行cmake时指定即可生成不同版本的VS工程文件,例如:

cmake -G "Visual Studio 14 2015 Win64" ..

cmake -G "Visual Studio 12 2013 Win64" ..

您只需要为每个版本使用正确的生成器名称。

至于每次添加文件时都重新生成,不幸的是没有办法解决这个问题。如果您愿意,可以在工作时将它简单地添加到 visual studio 中的项目中?顺便说一下,您不必在重新生成时删除所有构建工件,因此在将文件添加到目录时运行命令应该很简单,并且项目将在 visual studio 中自动更新。与通过 VS 中的图形用户界面添加它相比,它需要一点时间来适应,但并不是什么大问题。

编辑: 调试与发布不是生成器的一部分。您仍然可以像往常一样在 visual studio 中设置它们。

关于c++ - CMake 和不同版本的 Visual Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149071/

相关文章:

c++ - 制作自定义自解压器

cmake - 将 SDL2_image 构建为 CMake 外部项目

unix - 为 Debian Lenny 编译 OpenCV 2.4.2

转换失败时的 C++ dynamic_cast 行为

C++创建一个线程并通过引用传递对象

c++ - OpenCV不会打开许多​​相同格式的视频的一些视频

使用ascii在C中大写字母

visual-studio - 如何在 VS 设置和部署项目中创建名称设置为 [PRODUCTNAME] 的快捷方式?

c# - VS 2008 插件临时禁用/删除所有 catch block

cmake - qtcreator只能为cmake项目构建所有而非每个目标