Cmake (Clion) не может ссылку QT5 UiTools - PullRequest
1 голос
/ 07 января 2020

У меня есть файл cmake для различных фиктивных приложений Qt5.

cmake_minimum_required(VERSION 3.15)
project(Qt_demo)

set(CMAKE_CXX_STANDARD 17)

# Tell cmake where Qt is located
set(Qt5_DIR "~/Code/Cpp/Qt/5.12.6/gcc_64/lib/cmake/Qt5")

#enable mocking compiler
set(CMAKE_AUTOMOC ON)

#enable ui compiler
set(CMAKE_AUTOUIC ON)

#enable resources
set(CMAKE_AUTORCC ON)


# Tell cmake to find the modules Qt5Core and Qt5widgets
find_package(Qt5 COMPONENTS Core Widgets UiTools REQUIRED)

get_target_property(QtUiTools_location Qt5::UiTools LOCATION)

message("${QtUiTools_location}")


add_executable(screenshot_demo screenshot/screenshot_main.cpp screenshot/screenshot.cpp)
# Link the library to the executable
target_link_libraries(screenshot_demo Qt5::Core Qt5::Widgets)

qt5_add_resources(RC_SRC "application/application.qrc")
add_executable(application_demo application/main.cpp application/mainwindow.cpp ${RC_SRC})
qt5_use_modules(application_demo Core Widgets)

qt5_add_resources(CALC_RC_SRC "calculator_builder/calculatorbuilder.qrc")
add_executable(calculator_builder_demo calculator_builder/main.cpp calculator_builder/calculatorbuilder.cpp ${CALC_RC_SRC})
target_link_libraries(calculator_builder_demo Qt5::UiTools Qt5::Core Qt5::Widgets )

Кроме того, я добавил десантник Qt5 в качестве внешнего инструмента в clion согласно настройке

Первые два проекта компилируются и работают просто отлично. Однако в последнем проекте (построитель калькулятора) я пытаюсь использовать UITools, который является аддоном Qt5. Когда я нажимаю кнопку компиляции, я получаю следующую ошибку:

[ 28%] Linking CXX executable calculator_builder_demo
/home/marc/Code/Cpp/Qt/5.12.6/gcc_64/lib/libQt5UiTools.a(properties.o): In function `QFormInternal::variantToDomProperty(QFormInternal::QAbstractFormBuilder*, QMetaObject const*, QString const&, QVariant const&)':
/home/qt/work/qt/qttools/src/designer/src/uitools/../lib/uilib/properties.cpp:594: undefined reference to `QString::arg(QLatin1String, int, QChar) const'
/home/marc/Code/Cpp/Qt/5.12.6/gcc_64/lib/libQt5UiTools.a(formbuilderextra.o): In function `QFormInternal::QFormBuilderExtra::readUi(QIODevice*)':
/home/qt/work/qt/qttools/src/designer/src/uitools/../lib/uilib/formbuilderextra.cpp:145: undefined reference to `QVersionNumber::fromString(QStringView, int*)'
/home/qt/work/qt/qttools/src/designer/src/uitools/../lib/uilib/formbuilderextra.cpp:150: undefined reference to `QString::arg(QStringView, int, QChar) const'
collect2: error: ld returned 1 exit status
CMakeFiles/calculator_builder_demo.dir/build.make:137: recipe for target 'calculator_builder_demo' failed
make[3]: *** [calculator_builder_demo] Error 1
CMakeFiles/Makefile2:82: recipe for target 'CMakeFiles/calculator_builder_demo.dir/all' failed
make[2]: *** [CMakeFiles/calculator_builder_demo.dir/all] Error 2
CMakeFiles/Makefile2:89: recipe for target 'CMakeFiles/calculator_builder_demo.dir/rule' failed
make[1]: *** [CMakeFiles/calculator_builder_demo.dir/rule] Error 2
Makefile:118: recipe for target 'calculator_builder_demo' failed
make: *** [calculator_builder_demo] Error 2

Я полностью потерян. Любая помощь будет принята с благодарностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...