在c++的windows上使用cmake
Using cmake on windows for c++
大约连续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中使用过它。
- 为了让CMake找到库,通常需要设置CMake_PREFIX_PATH环境变量,使其指向安装项目依赖项的目录
- 将您的PATH环境设置为可变的,这样您就可以通过调用
make.
来调用编译器,我认为您需要为Mingw32手动进行调用,对于Visual Studio,您可以使用已经设置了这些变量的"Visual Studio命令道具" -
使用所需生成器运行CMake。要从命令行选择发电机,请使用-G开关。您可能会使用以下选项之一(…表示要传递给cmake的其他选项)
对于MinGW中使用的GNU make,请使用
cmake -G "MinGW Makefiles" ...
对于来自visual studio的NMake,请使用
cmake -G "NMake Makefiles" ...
创建VisualStudio项目也是可能的,但我不建议这样做,因为那时很难设置自动生成。当我尝试使用VS项目时,我在依赖关系方面也遇到了一些问题。
- 将目录更改为您的构建目录(即您调用
cmake
的目录,其中包含CMakeCache文件),然后运行make
或nmake
引用"Visual Studio中的CMake支持":
Visual Studio 2017引入了对处理CMake项目的内置支持。这使得开发使用CMake构建的C++项目变得简单得多,而无需从命令行生成VS项目和解决方案。这篇文章概述了CMake支持,以及如何在VisualStudio中轻松入门并保持高效。
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- CMake 在 Windows 上的自定义位置上找不到 Boost
- Cmake with Flex/Bison on windows
- 使用 CMake 在 Windows 10 上构建 uWebSockets
- 在 Windows 10 下使用 GTest 的 CMake - 致命错误 LNK1104:无法打开文件"gtest.lib",但存在调试"gtestd.lib"
- CMake 看不到SDL2_PATH环境变量 (Windows)
- 如何使用cmake和Visual Studio 2019编译简单的Windows应用程序?
- CMake & MinGW Compileilation on Windows,无需 -G "MinGW Makefiles"标志
- OpenCV cmake构建总是在Windows中抛出错误
- 如何在Windows上链接动态构建的cmake文件
- 用于Clang on Windows的CMake生成器
- 在windows上使用cmake编译FFTW(OpenMP)
- CMake Qt建立在Windows链接器问题之上
- CMake 生成的程序无法在 Windows 上链接:尝试链接到不存在的文件
- 如何使用CMake在Windows上将应用程序入口点设置为main()C++?
- 在Windows上设置CMake和vcpkg时出错"无法打开包含文件"
- 简单的cmake项目,在Windows上使用nmake构建没有调试符号
- CMAKE:查找/添加Visual Studio或Windows SDK库和标头的正确方法?
- 需要示例 CMake 项目,该项目在 Windows 和 Visual Studio 上使用 Xerces-C++ 3
- CMake linking Windows SDK