如何告诉cmake不要创建控制台窗口?

use*_*729 9 cmake

我可以通过gcc实现这个目标:

gcc -mwindows -o simple simple.c
Run Code Online (Sandbox Code Playgroud)

但只能在cmake中找到它:

add_executable(simple WIN32 simple.c)
Run Code Online (Sandbox Code Playgroud)

但它并不完全相同-mwindows,

这将需要入口点WinMain,

虽然gcc -mwindows不需要这个(可以main).

我该怎么做呢?

DLR*_*ave 15

如果您使用:

add_executable(simple WIN32 simple.c)
Run Code Online (Sandbox Code Playgroud)

那么你必须提供WinMain功能.这就是add_executable的WIN32标志意味着:它意味着你将使它成为一个Windows程序,并提供一个WinMain函数.

如果您真的在编写Windows应用程序,我建议您这样做.这是最有意义的,最适合底层操作系统的东西.

但是,如果你仍然希望传递gcc"-mwindows"标志,但仍然使用"main",那么只需将"-mwindows"添加到CMAKE_CXX_FLAGS和/或CMAKE_C_FLAGS值.您可以在cmake-gui程序中通过交互式调整这些变量以包含"-mwindows"来执行此操作,或者您可以使用命令行CMake执行此操作,如下所示:

cmake -DCMAKE_C_FLAGS="-mwindows"
Run Code Online (Sandbox Code Playgroud)