在c++的windows上使用cmake

Using cmake on windows for c++

本文关键字:cmake windows c++      更新时间:2023-10-16

大约连续5天,我一直在尝试用c++环境设置我的计算机,以便用sdl、glm、opengl等库进行编程。对我们来说,能够在演示文稿的unix机器上运行它很重要,所以我使用cmake运行。我终于可以使用cmakegui了,我甚至不用再尝试任何IDE了。

我指定了我的文件夹项目和在哪里构建二进制文件,我得到了一个文件夹"CMakeFiles"以及一个txt"CMakeCache"、一个CMAKE文件"CMAKE_install.CMAKE"和一个文件"Makefile"。此外,在我的文件夹"CMakeFiles"中,还有许多其他文件夹,如"CMakeTmp"、"CompilerId"、"编译器Id XX等",在这两个文件夹中,"Compiler*"都有一个.exe,但它不起作用!那么我想要的可执行文件在哪里?

我打开cmd,导航到我的文件夹,试着按照指令写"make"。唉,效果不太好。希望你能分享你的智慧,帮助像我这样的新手!

那么编译包含附加库的项目到底需要什么呢?到目前为止,我有一个编译器Mingw32,它是最新的CMake,并使用cmakegui来提取二进制文件,但得到了makefile

编辑:hrrm。只有我会遇到这种问题吗?我可以补充一点,我已经看了大约10个教程,90%的步骤都是类似的(如果用我最初尝试的VS编译):

  • 下载最新SDL
  • 在例如C:\SDL上创建一个文件夹,其中包含两个文件夹,include和lib
  • 从下载的SDL中复制libs和includes
  • 制作新的VS项目,打开VC++目录,并在例如C:\SDL上添加lib/incl文件夹
  • 添加到链接器SDL.lib和SDLmain.lib(我确保它们已链接,这里没有问题)
  • 将系统更改为WINDOWS(如果不需要两个窗口,则为可选)
  • 将include添加到"附加库"
  • 将SDL.dll文件(我从最新的SDL中获得)放在我的C:\windows\system32(64SysWoW)中也在我的项目文件中

因此,我真正想要的是让CMake工作起来,因为它成功地生成和构建了源代码(使用gui),我觉得我已经接近了。我需要从sdl向我的编译器mingw32和/或CMake添加任何额外的库吗

如果您通过命令运行cmake:

cmake -G "Visual Studio 14 Win64" pathtosourcedir

您需要运行此命令才能继续(在Visual Studio命令提示符中):

msbuild Project.sln

如果你运行cmake:

cmake -G "NMake Makefiles" pathtosourcedir

您需要运行此cmd才能继续(在Visual Studio命令提示符中):

nmake

Visual Studio几乎做到了。选择Visual Studio作为目标。在Visual Studio中打开生成的项目,构建它。(就像你已经做过的那样)。然后,与其尝试运行BUILD_ALL,不如运行一个创建可执行文件的真实项目,它也应该在该列表中。只需右键点击并"播放"即可。

如果你仍然有错误,请详细发布,包括你在错误发生前做了什么。注意:一个精心配置的跨平台CMake项目(又名CMakeLists.txt)不需要任何对VC++目录的篡改。它应该能自动工作,尤其是与SDL这样的知名库一起工作。

如果我理解正确,您希望在项目中使用CMake。我在所有的项目中都使用CMake。我不会给你确切的分步操作,因为我使用的是Arch Linux,但我也在Windows7中使用过它。

  1. 为了让CMake找到库,通常需要设置CMake_PREFIX_PATH环境变量,使其指向安装项目依赖项的目录
  2. 将您的PATH环境设置为可变的,这样您就可以通过调用make.来调用编译器,我认为您需要为Mingw32手动进行调用,对于Visual Studio,您可以使用已经设置了这些变量的"Visual Studio命令道具"
  3. 使用所需生成器运行CMake。要从命令行选择发电机,请使用-G开关。您可能会使用以下选项之一(…表示要传递给cmake的其他选项)

    对于MinGW中使用的GNU make,请使用cmake -G "MinGW Makefiles" ...

    对于来自visual studio的NMake,请使用cmake -G "NMake Makefiles" ...

    创建VisualStudio项目也是可能的,但我不建议这样做,因为那时很难设置自动生成。当我尝试使用VS项目时,我在依赖关系方面也遇到了一些问题。

  4. 将目录更改为您的构建目录(即您调用cmake的目录,其中包含CMakeCache文件),然后运行makenmake

引用"Visual Studio中的CMake支持":

Visual Studio 2017引入了对处理CMake项目的内置支持。这使得开发使用CMake构建的C++项目变得简单得多,而无需从命令行生成VS项目和解决方案。这篇文章概述了CMake支持,以及如何在VisualStudio中轻松入门并保持高效。