我可以通过gcc实现这一点:
gcc -mwindows -o simple simple.c
但只能在cmake中找到:
add_executable(simple WIN32 simple.c)
但它与-mwindows
,
这将要求输入点为WinMain
,
虽然gcc -mwindows
不需要这个(可以是main
)。
我该怎么做呢?
答案 0 :(得分:15)
如果您使用:
add_executable(simple WIN32 simple.c)
然后你必须提供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"
答案 1 :(得分:1)
正如DLRdave所说,可执行文件将是win32,这意味着它将以WinMain作为入口点并成为Windows应用程序。
如果应用程序仍然是跨平台的,那么通常的方法来抑制控制台窗口但仍然允许使用main是编写SDL或SFML库中的存根WinMain,它只是用全局调用主函数变量__argc和__argv作为参数并返回其结果。
这可以防止应用程序拥有控制台窗口,但可以减少必须使用WinMain作为入口点的代码中断。
答案 2 :(得分:0)
您可以添加目标链接选项(对于新版本的Cmake)
target_link_options(simple PRIVATE -mwindows)
https://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/i386-and-x86_002d64-Windows-Options.html