在Windows中链接基于CMake的项目的正确方法是什么?

时间:2012-10-27 16:00:16

标签: dll linker cmake mingw

最后,经过一整天的努力,我已经完成了基于CMake的项目,以便在Windows上成功编译项目(我一直在Linux中开发它),它甚至可以很好地连接在一起,完美不是吗?现在我启动程序和繁荣,它无法找到DLL库。

所以,问题是:

我有一个带有库和可执行文件的CMake项目,该可执行文件正在使用项目的库。我在项目中也有很多第三方库。它编译和链接很好。当我尝试启动它时,它会打印错误,找不到项目的库。我已将其复制到可执行文件的目录中。现在它打印出没有找到第三方库,我已将它们全部复制到exe的目录中。现在它打印出找不到gcc的库,所以我已经将C:\ MinGW \ bin添加到路径中,现在它启动正常。

但我觉得这不是正确的方法。我想让我的队友(新人)免除那次发射的痛苦。

1 个答案:

答案 0 :(得分:2)

静态链接所有内容,或将必要的install()次调用添加到您的CMakeLists.txt中。将所有需要的lib安装到同一目录中,然后从那里运行可执行文件。

如果要从CMAKE_BINARY_DIR运行可执行文件,可以

set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )

这会让CMake将链接的二进制文件放到同一个目录中。

至于gcc运行时 - 除了复制dll或静态链接之外别无他法。