Как мне сказать cmake не создавать консольное окно? - PullRequest
9 голосов
/ 02 мая 2010

Я могу добиться этого с помощью gcc:

gcc -mwindows -o simple simple.c

Но найдите это только в cmake:

add_executable(simple WIN32 simple.c)

Но это не совсем то же самое, что -mwindows,

для этого потребуется точка входа WinMain,

, пока gcc -mwindows этого не требует (может быть main).

Как мне правильно это сделать?

Ответы [ 2 ]

15 голосов
/ 23 февраля 2011

Если вы используете:

add_executable(simple WIN32 simple.c)

тогда вы должны предоставить функцию WinMain. Вот что означает флаг WIN32 для add_executable: это означает, что вы собираетесь сделать из него программу Windows и предоставить функцию WinMain.

Я бы порекомендовал сделать это таким образом, если вы действительно пишете приложение для Windows. Это то, что имеет смысл и наиболее естественно вписывается в базовую ОС.

Однако, если вы все еще хотите передать gcc флаг "-mwindows", но в любом случае использовать "main", просто добавьте "-mwindows" к значению CMAKE_CXX_FLAGS и / или CMAKE_C_FLAGS. Вы можете сделать это в программе cmake-gui, настроив эти переменные в интерактивном режиме, добавив в них «-mwindows», или вы можете сделать это с помощью командной строки CMake, например:

cmake -DCMAKE_C_FLAGS="-mwindows"
1 голос
/ 06 сентября 2012

Как сказал DLRdave, говоря, что исполняемый файл будет win32, это означает, что он будет иметь WinMain в качестве точки входа и будет приложением Windows.

Если приложение должно быть кроссплатформенным, то обычное средство подавления окна консоли, но все же разрешить использование main, это написать заглушку WinMain, найденную в библиотеках SDL или SFML, которая просто вызывает функцию main с глобальным переменные __argc и __argv в качестве аргументов и возвращает их результат.

Это не позволяет приложению иметь консольное окно, но сводит к минимуму нарушение кода использования WinMain в качестве точки входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...