C++/Qt 发行版中的库链接
Library linking in C++/Qt distribution
我正在用 C++11 开发一个项目,在分发、编译、打包等方面不是最大的专家。我使用
- CMake 3.1.0
- Qt 5.4(社区版)
此外,我希望该程序能够在 OS X 和 Windows 上运行。因此,我的 IDE 包括:
- 苹果Xcode7
- 微软 Visual Studio 2013
我在 Windows 构建时遇到问题。截至目前,我无法将可执行文件复制到另一台计算机,因为不包括 DLL 文件。如果我复制所有从中收到错误的 DLL 文件,它只是说程序无法 运行。我已经阅读了一些有关静态库链接的内容,但不确定这是否是我需要的。
我的 CMakeLists.txt 看起来像这样:
set(libsources file1.cpp file2.cpp)
set(exec1sources file3.cpp file4.cpp)
set(exec2sources file5.cpp file6.cpp)
# some qt commands
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ..)
add_library(sharedlib ${libsources])
generate_export_header(sharedlib)
add_executable(exec1 ${exec1sources})
add_executable(exec2 ${exec2sources})
target_link_libraries(sharedlib Qt5::A Qt5::B)
target_link_libraries(exec1 Qt5::A Qt5::B sharedlib)
target_link_libraries(exec2 Qt5::A Qt5::C sharedlib)
install(TARGETS exec1 RUNTIME DESTINATION bin)
install(TARGETS exec2 RUNTIME DESTINATION bin)
正如您可能看到的那样,我想要 2 个可执行文件,每个都使用共享库中的一些功能。我希望他们独立工作。
我可能不是世界上第一个遇到这个问题的人,但我无法在 Whosebug 上找到类似的帖子。
你试过windeployqt了吗?它会自动为您的应用程序复制所有依赖项。您可以在 Qt-Kit 的 bin 文件夹中找到它
对于Mac,有一个类似的工具,叫做macdeployqt。
我正在用 C++11 开发一个项目,在分发、编译、打包等方面不是最大的专家。我使用
- CMake 3.1.0
- Qt 5.4(社区版)
此外,我希望该程序能够在 OS X 和 Windows 上运行。因此,我的 IDE 包括:
- 苹果Xcode7
- 微软 Visual Studio 2013
我在 Windows 构建时遇到问题。截至目前,我无法将可执行文件复制到另一台计算机,因为不包括 DLL 文件。如果我复制所有从中收到错误的 DLL 文件,它只是说程序无法 运行。我已经阅读了一些有关静态库链接的内容,但不确定这是否是我需要的。
我的 CMakeLists.txt 看起来像这样:
set(libsources file1.cpp file2.cpp)
set(exec1sources file3.cpp file4.cpp)
set(exec2sources file5.cpp file6.cpp)
# some qt commands
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ..)
add_library(sharedlib ${libsources])
generate_export_header(sharedlib)
add_executable(exec1 ${exec1sources})
add_executable(exec2 ${exec2sources})
target_link_libraries(sharedlib Qt5::A Qt5::B)
target_link_libraries(exec1 Qt5::A Qt5::B sharedlib)
target_link_libraries(exec2 Qt5::A Qt5::C sharedlib)
install(TARGETS exec1 RUNTIME DESTINATION bin)
install(TARGETS exec2 RUNTIME DESTINATION bin)
正如您可能看到的那样,我想要 2 个可执行文件,每个都使用共享库中的一些功能。我希望他们独立工作。
我可能不是世界上第一个遇到这个问题的人,但我无法在 Whosebug 上找到类似的帖子。
你试过windeployqt了吗?它会自动为您的应用程序复制所有依赖项。您可以在 Qt-Kit 的 bin 文件夹中找到它
对于Mac,有一个类似的工具,叫做macdeployqt。