第一次使用 OpenGL:我应该如何配置 Visual Studio Express 2015 来构建和运行 OpenGL 项目?
Posted
技术标签:
【中文标题】第一次使用 OpenGL:我应该如何配置 Visual Studio Express 2015 来构建和运行 OpenGL 项目?【英文标题】:First time OpenGL: How should I configure Visual Studio Express 2015 to build and run an OpenGL project? 【发布时间】:2016-01-10 11:29:02 【问题描述】:我对 OpenGL 完全陌生,并且正在学习一些初学者教程 here
我非常仔细地按照第一个教程中的步骤进行操作,并且完全按照描述进行操作,但是我在 CMake 中遇到错误:no_cmake_c_compiler found 和 no_cmake_cxx_compiler found。我用谷歌搜索了这些错误,但直到现在我都找不到非常明确的步骤来解决这个问题。
所以我决定自己下载教程的源代码,并尝试在没有 CMake 的情况下将它们构建为 VS Express 2015 中的新项目。但是,我似乎迷失在项目配置以及标题和源代码的包含中文件。有人可以告诉我应该如何进行吗?
【问题讨论】:
【参考方案1】:您可以简单地告诉 cmake 编译器在哪里。当您第一次单击配置时,您将看到一个对话框,您可以在其中选择生成器。您首先为您的 Visual Studio 版本选择生成器。其次,您选择“指定本机编译器”,然后点击下一步。在以下对话框中,您需要浏览 C 和 C++ 编译器。为两者选择“C:\Program Files (x86)\Microsoft Visual Studio\VC\bin\cl.exe”。 (如果您的机器上隐藏了文件结尾,请小心。还有一个名为 cl.exe.config 的文件。)
点击完成,它应该可以工作了。
【讨论】:
感谢您的回答。我试过了,但这次得到了错误:cl.exe 无法编译一个简单的测试程序。我搜索了解决方案并尝试了这里建议的 2 个:***.com/questions/14590947/… 但不幸的是,它们都没有奏效。 (至于第二个我卸载了我有的.NET 4.6,但它似乎还在,因为它没有让我安装4.0,它说我有一个更新的版本) 顺便说一句,我实际上选择了 VS 2014 的生成器,因为它只有 2012 或 2014 的选项,而不是 2015。 正确的生成器称为“Visual Studio 14 2015”。你用的是什么版本的cmake? 是的,我选择 Visual Studio 14 2015 Win64(因为我的 Windows 是 64 位)。 CMake 版本是 3.4.1。 嗯,好的,我现在尝试使用 cmake 3.4.1,但一切都很好。您需要提供更多信息。 cmake 给你的确切输出是什么?是否需要使用 Visual Studio 和 msvc 编译器?【参考方案2】:更新:尝试使用 CMake 3.4.2 后,输出为:
对我来说现在看起来好多了,但是当我进入包含二进制文件的文件夹时,那里没有 Tutorials.sln 文件。
The C compiler identification is MSVC 19.0.23506.0
The CXX compiler identification is MSVC 19.0.23506.0
Check for working C compiler using: Visual Studio 14 2015 Win64
Check for working C compiler using: Visual Studio 14 2015 Win64 -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working CXX compiler using: Visual Studio 14 2015 Win64
Check for working CXX compiler using: Visual Studio 14 2015 Win64 -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Found OpenGL: opengl32
Looking for pthread.h
Looking for pthread.h - not found
Found Threads: TRUE
Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
Using Win32 for window creation
Using WGL for context creation
Looking for sys/types.h
Looking for sys/types.h - found
Looking for stdint.h
Looking for stdint.h - found
Looking for stddef.h
Looking for stddef.h - found
Check size of off64_t
Check size of off64_t - failed
Looking for fseeko
Looking for fseeko - not found
Looking for unistd.h
Looking for unistd.h - not found
Configuring done
--------------------------------------------
--------------------------------------------
*Older:* This is what I get from CMake as Output:
> The C compiler identification is unknown The CXX compiler
> identification is unknown Check for working C compiler using: Visual
> Studio 14 2015 Win64 Check for working C compiler using: Visual Studio
> 14 2015 Win64 -- broken CMake Error at C:/Program Files
> (x86)/CMake/share/cmake-3.4/Modules/CMakeTestCCompiler.cmake:61
> (message): The C compiler "C:/Program Files (x86)/Microsoft Visual
> Studio
> 14.0/VC/bin/cl.exe" is not able to compile a simple test program.
>
> It fails with the following output:
>
> Change Dir: C:/Users/Antonia/CMakeBuild/CMakeFiles/CMakeTmp
>
>
>
> Run Build Command:"C:/Program Files
> (x86)/MSBuild/14.0/bin/MSBuild.exe" "cmTC_f5d7b.vcxproj"
> "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"
>
> Microsoft (R) Build Engine version 14.0.24723.2
>
>
> Copyright (C) Microsoft Corporation. All rights reserved.
>
>
>
>
>
> Build started 16.1.2016 �. 14:41:13.
>
>
> The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets
> attribute at "C:\Program Files
> (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (186,61)" does
> not exist in the project, and will be ignored.
>
>
> Project
> "C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\cmTC_f5d7b.vcxproj"
> on node 1 (default targets).
>
>
> PrepareForBuild:
>
>
> Creating directory "cmTC_f5d7b.dir\Debug\".
>
> Creating directory "C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\Debug\".
>
> Creating directory "cmTC_f5d7b.dir\Debug\cmTC_f5d7b.tlog\".
>
>
> InitializeBuildStatus:
>
>
> Creating "cmTC_f5d7b.dir\Debug\cmTC_f5d7b.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
>
>
> ClCompile:
>
>
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /W1 /WX- /O2 /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t
> /Zc:forScope /Zc:inline /Fo"cmTC_f5d7b.dir\Debug\\"
> /Fd"cmTC_f5d7b.dir\Debug\vc140.pdb" /Gd /TC /errorReport:queue
> C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\testCCompiler.c
>
> Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
>
> Copyright (C) Microsoft Corporation. All rights reserved.
>
>
>
> cl /c /W1 /WX- /O2 /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline
> /Fo"cmTC_f5d7b.dir\Debug\\" /Fd"cmTC_f5d7b.dir\Debug\vc140.pdb" /Gd
> /TC /errorReport:queue
> C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\testCCompiler.c
>
>
>
> testCCompiler.c
>
>
> Link:
>
>
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\Debug\cmTC_f5d7b.exe"
> /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTUAC:"level='asInvoker'
> uiAccess='false'" /manifest:embed
> /PDB:"C:/Users/Antonia/CMakeBuild/CMakeFiles/CMakeTmp/Debug/cmTC_f5d7b.pdb"
> /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT
> /IMPLIB:"C:/Users/Antonia/CMakeBuild/CMakeFiles/CMakeTmp/Debug/cmTC_f5d7b.lib"
> /MACHINE:X64 cmTC_f5d7b.dir\Debug\testCCompiler.obj
>
>
> LINK : fatal error LNK1104: cannot open file 'kernel32.lib'
> [C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\cmTC_f5d7b.vcxproj]
>
>
> Done Building Project
> "C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\cmTC_f5d7b.vcxproj"
> (default targets) -- FAILED.
>
>
>
>
>
> Build FAILED.
>
>
>
>
>
> "C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\cmTC_f5d7b.vcxproj"
> (default target) (1) ->
>
>
> (Link target) ->
>
>
> LINK : fatal error LNK1104: cannot open file 'kernel32.lib' [C:\Users\Antonia\CMakeBuild\CMakeFiles\CMakeTmp\cmTC_f5d7b.vcxproj]
>
>
>
>
>
> 0 Warning(s)
>
> 1 Error(s)
>
>
>
>
>
> Time Elapsed 00:00:00.81
>
>
>
>
>
>
> CMake will not be able to correctly generate this project. Call
> Stack (most recent call first): CMakeLists.txt:3 (project)
>
>
> Configuring incomplete, errors occurred! See also
> "C:/Users/Antonia/CMakeBuild/CMakeFiles/CMakeOutput.log". See also
> "C:/Users/Antonia/CMakeBuild/CMakeFiles/CMakeError.log".
【讨论】:
好吧,看来您缺少正确的 windows sdk... 那么您安装了哪个版本的 VS 2015?有桌面版、Windows 版,还有社区版(我有)。 我安装了 Visual Studio Express 2015 社区。我从 Microsoft Blend for Visual Studio 2015 开始,它的版本是 14.0.24720.00 Update 1。.NET 框架是 4.6.01055 试试 CMAke 3.4.2,也许是已经修复的 bug:cmake.org/Bug/view.php?id=15831 感谢您的建议。请在上面的答案中找到更新的信息。【参考方案3】:我在尝试使用新版本 (3.4.2) 时发现了错误 - 我错过了在配置后单击生成...现在我在 VS 中拥有了项目和源文件。非常感谢您建议我尝试使用 CMake 3.4.2 :)
【讨论】:
以上是关于第一次使用 OpenGL:我应该如何配置 Visual Studio Express 2015 来构建和运行 OpenGL 项目?的主要内容,如果未能解决你的问题,请参考以下文章
配置VAO和VBO时,顶点数据数组是不是应该使用相同的方法? (OpenGL)[重复]
我应该如何在 directx/opengl 中解释 RGB 颜色?