【问题标题】:How to statically link Qt5 with CMake in CLion?如何在 CLion 中将 Qt5 与 CMake 静态链接?
【发布时间】:2016-10-24 18:42:22
【问题描述】:

我下载了 Qt 的源代码,并使用-static 标志将其编译为/usr/local/Qt5_static/。我创建了空项目并像这样更改了CMakeLists.txt

cmake_minimum_required(VERSION 3.6)
project(Splines)

set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wextra -pedantic -static -stdlib=libc++ -lc++abi -v")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
set(SOURCE_FILES main.cpp)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(Qt5_DIR "/usr/local/Qt5_static/")
find_package(Qt5Widgets)

add_executable(Splines ${SOURCE_FILES})

target_link_libraries(Splines Qt5::Widgets)

有一个链接器错误。

/usr/bin/ld: attempted static link of dynamic object `/usr/lib/libQt5Widgets.so.5.7.0'
clang-3.8: error: linker command failed with exit code 1 (use -v to see invocation)

看起来链接器试图链接共享库而不是我编译的静态库。我尝试了 CMakeLists.txt 的其他变体,但失败了。

如何正确地将 Qt 与 cmake 静态链接? (对不起我的英语不好)

【问题讨论】:

  • 你能解决你的问题吗?

标签: c++ qt makefile cmake qt5


【解决方案1】:

CMAKE_CXX_FLAGS编译器标志,但target_link_libraries 使用链接器标志,即CMAKE_EXE_LINKER_FLAGS。对于静态链接,您需要将-static 添加到链接器标志

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多