Здравстуйте. Есть необходимость собрать проект весом не более 1 мб, но 1 класс в проекте весит около 13мб. Так вот, что я могу сделать, что бы exe у меня был весом не более 1 мб?
CLion 2017.3, msys64/mingw32, w64 5.0, тестовый проект с одним классом:
#include <iostream>
class Foo {
public:
void bar() {
std::cout << "bar\n";
}
};
int main() {
Foo foo;
foo.bar();
return 0;
}
После сборки на выходе получаем исполняемый файл размером 379кб.
Добавляем (в CMakeLists.txt) флажок компилятора -s (убирает символы из исполняемого файла, отлаживать станет проблематично):
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s")
После сборки получаем исполняемый файл размером 17кб.
Упаковываем полученный exe с помощью UPX:
upx.exe foo.exe
Получаем исполняемый файл размером всего 9кб.
Дополнительно можно задать компилятору ключ оптимизации по размеру: -Os, но для этого простого примера разница была несущественной.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей