在编译文件中包含mingw库

时间:2013-10-18 13:19:33

标签: gcc cmake mingw static-linking libgcc

我正在使用cmake生成Eclipse CDT MinGW项目。 (Eclipse Version Kepler)

这是我的Cmakelist:

project(IMGTODICOM)

find_package(ITK REQUIRED)

include(${ITK_USE_FILE})

add_executable(IMGTODICOM IMGTODICOM.cxx)

target_link_libraries(IMGTODICOM ITKReview ${ITK_LIBRARIES})

代码在我的计算机中编译并运行没有问题,但在其他PC中它不运行。有些像libgcc_s_dw2-1.dll这样的dll是必需的。我在计算机中查找了这个dll,并在C:\MinGW\bin中找到了它。为了解决这个问题,我在另一台PC上复制了这个文件夹的内容,最后运行了exe文件。 但是,我想知道是否有更好的方法在编译过程中添加这些库的任何Windows PC中运行exe文件。

我正在阅读,我应该将编译器链接到静态库。在Eclipse中,我尝试在属性> C / C ++ Include Path和Symbols下以及项目Path> Libraries下添加dll,但它不起作用。我试图修改CmakeList,但它也不起作用。

我不知道为什么会出现这个问题,如何在exe文件中包含C:\MinGW\bin的内容。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:4)

是的,有办法。对于纯C代码:

set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static")

对于C ++代码:

set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")