У меня была эта проблема сегодня вечером. Я использую CMake для создания проекта 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)
Надеюсь, это поможет кому-то еще.