wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了VS10始终链接到SUBSYSTEM:WINDOWS; CMake SDL GLEW大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我只是想设置一个能够在CMake支持的每个平台上编译的简单项目.我在Win7系统上启动了我的项目,并编写了一个包含SDl.h和GL / glew.h的main.cpp.主要功能的风格很简单: int main(int, char**) {} 在我的CMakeLists.txt中,我调用了find_package(SDL)和find_package(GLEW). CMake-part运行良好,所以我
我只是想设置一个能够在CMake支持的每个平台上编译的简单项目.我在Win7系统上启动了我的项目,并编写了一个包含SDl.h和GL / glew.h的main.cpp.主要功能的风格很简单:

int main(int,char**) {}

在我的CMakeLists.txt中,我调用了find_package(SDL)和find_package(GLEW). CMake-part运行良好,所以我刚刚打开了vs10-solution-file并尝试编译,当我得到LNK2019时:

这意味着我选择了错误的子系统,不是吗?但是,如果我只是将子系统从CONSOLE切换到WINDOWS并返回,则问题仍然存在. CMake为此设置了隐藏选项吗?如何在vs10中编译我的简单程序?

解决方法

我今晚遇到了这个问题.我正在使用CMake创建@L_820_0@mSVC项目来构建我的GLFW应用程序.当然,如果你自己使用MSVC,摆脱控制台窗口的古老技巧是进入属性并将“子系统”设置为“Windows”和“入口点”到mainCRTStartup,这对应于将/ SUBSYstem:WINDOWS / ENTRY:“mainCRTStartup”标志添加到link.exe,但CMake没有提供一种简单的方法.

如果你只是做一个直接的add_executable()命令,你将得到/ SUBSYstem:CONSOLE / ENTRY:“mainCRTStartup”被传递给链接器.

如果你执行add_executable(exename WIN32 …),你将获得/ SUBSYstem:WINDOWs.

Gaah!这两种选择都让我们中途到了!

我浏览了CMake随附的.cmake文件(fwiw,我正在使用CMake 2.8.10和Visual studio 2012 Express),并发现似乎控制/ SUBSYstem和/ ENTRY标志的变量称为CMAKE_CREATE_WIN32_EXE.因此,要设置这两个部分,我们只需要更改该变量.这就是我最终得到的结果:

if(MSVC)
  set(CMAKE_CREATE_WIN32_EXE "/SUBSYstem:WINDOWS /ENTRY:\"mainCRTStartup\"")
endif(MSVC)

希望能帮助别人.

大佬总结

以上是大佬教程为你收集整理的VS10始终链接到SUBSYSTEM:WINDOWS; CMake SDL GLEW全部内容,希望文章能够帮你解决VS10始终链接到SUBSYSTEM:WINDOWS; CMake SDL GLEW所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。