Я загрузил источники Qt и скомпилировал его с флагом -static
в /usr/local/Qt5_static/
. Я создал пустой проект и изменил CMakeLists.txt
так:Как статически связывать Qt5 с CMake в CLion?
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)
Похоже, что линкер пытался связать общую библиотеку вместо статической библиотеки lib, которую я скомпилировал. Я пробовал другие варианты CMakeLists.txt, но не смог.
Как статически связать Qt с cmake правильно? (Извините за мой плохой английский)