Windows下使用CMake+MinGW靜態編譯釋出.exe程式
阿新 • • 發佈:2019-01-07
最近使用mingw編譯了一份boost靜態庫,在CMake編譯成.exe程式釋出後,發現仍舊提示缺少DLL檔案。提示缺失的DLL檔案大概如下:
libgcc*.dll
libstdc++*.dll
libwinpthread-1.dll
經過簡單摸索之後,終於找到了解決方法。
#需要在CMakeLists.txt新增以下內容
#設定靜態編譯
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
#連結靜態庫
#連結boost靜態庫(project_Name為你的專案名,*分別代表庫名、mingw版本號、boost庫版本號,如:libboost_system-mgw72-mt-s-1_65_1.a)
target_link_libraries(project_Name libboost_*-mgw*-mt-s-*.a)
#連結gcc-g++靜態庫
target_link_libraries(project_Name libgcc.a)
target_link_libraries(project_Name libstdc++.a)
#連結網路庫(如需要)
target_link_libraries(project_Name ws2_32)
#連結執行緒庫(必須放到最後)
target_link_libraries(project_Name libpthread.a)