我有以下 CMakeLists.txt :
cmake_minimum_required(VERSION 3.3)
project(Thesis)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp Graph.h Graph.cpp)
add_executable(Thesis ${SOURCE_FILES})
我在自定义文件夹ClionProjects\Thesis\exe\Release
上使用Run-> Build(作为发行版),我得到一个可执行文件Thesis.exe
。如果我打开它,我会收到以下连续错误:
我到底错过了什么?
答案 0 :(得分:5)
我的解决方案是静态链接库。那就是没有必要在你的.exe旁边站着一个尴尬的.dll。
在CMakeLists.txt上添加一行
set(CMAKE_EXE_LINKER_FLAGS -static)
解决了我的问题。如果您出于某种原因需要它,还有其他两个选项也可以使用。
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS} -static-libgcc -static-libstdc++ -static")
#set(CMAKE_EXE_LINKER_FLAGS=-static-libgcc -static-libstdc++ -static)
我的.exe
从100KB增加到1MB
编辑:一些更酷的选项
在问题的原始-s
添加了-O3
和CMakeLists.txt
。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -s -O3")
-s
将大小从1MB缩小到650KB。 -s
-O3
应将优化级别设置为3,即最大-O3
您可以查看gcc.gnu.org site中的所有选项。有太多了。使用"查找"您的浏览器选项(Ctrl + f)。
答案 1 :(得分:0)
您缺少2个必需的DLL。
解决此问题的最简单方法是告诉编译器使用GCC中的-static
选项静态链接每个库。
另一种方法是将这些DLL复制到可执行文件所在的文件夹中。
第三种方法是找到这些DLL和register them。