我使用setAdapter
wxWidgets 3.0.3
MinGW64 7.2
然后我用mingw32-make -j4 -f makefile.gcc BUILD=debug SHARED=0 UNICODE=1
创建了一个示例项目“Hello world”,并使用CMake编译。
CLion 2017.3
包含的标题是
cmake_minimum_required(VERSION 3.9)
project(wx_widgets_hello_world)
set(CMAKE_CXX_STANDARD 11)
set(wxWidgets_ROOT_DIR "C:/wx_widgets_3_0_3")
set(wxWidgets_CONFIGURATION mswud)
find_package(wxWidgets COMPONENTS adv core base REQUIRED)
include(${wxWidgets_USE_FILE})
add_executable(wx_widgets_hello_world main.cpp)
target_link_libraries(wx_widgets_hello_world ${wxWidgets_LIBRARIES})
#include <wx/wx.h>
#include <wx/grid.h>
因为我正在试验adv
课程。
我检查生成的.exe,它是90MB。当然我做错了。有什么想法吗?
我不是CMake的专家(从未使用过),但也许是因为我将所有库(wxGrid
)与
adv base core
答案 0 :(得分:0)
首先,Debug
版本总是大于Release
版本,因为它们包含大量用于调试的信息。因此,检查Release
构建大小会为您提供更多有用的信息。
其次,我假设SHARED=0
表示wxWidgets
是作为静态库构建的,并且是静态链接的。这意味着整个库被合并到您的可执行文件中。对variety of reasons实际使用库的共享版本通常更好。特别是,这将大大减少可执行文件的大小。请注意,用户无论如何都需要wxWidgets
共享库来运行您的可执行文件,但它可能已经安装在他的系统上。
最后,看看object stripping。这是一个从可执行文件中删除未使用的符号(函数,全局变量等)的过程。我不知道CMake是否默认执行此操作。 GCC编译器选项&#34; -Os&#34; (针对大小进行优化)对于发布版本来说也是一件好事。