C++ 使用KDE框架将qmake转换为cmake
你好,我有一个项目,我想把它从qmake转换成cmake 我有一个qmake pro文件和两个cmakelists.txt 项目目录如下所示C++ 使用KDE框架将qmake转换为cmake,c++,qt,cmake,qmake,kde,C++,Qt,Cmake,Qmake,Kde,你好,我有一个项目,我想把它从qmake转换成cmake 我有一个qmake pro文件和两个cmakelists.txt 项目目录如下所示 src headers \ (all header files are here) ui\ resources \ cmakelists.txt (2)\ (all my cpp src files are here ) cmakeList.txt(1) qmake.pro file 这是qmake.pro文件
src
headers \
(all header files are here)
ui\
resources \
cmakelists.txt (2)\
(all my cpp src files are here )
cmakeList.txt(1)
qmake.pro file
这是qmake.pro文件
QT += core gui dbus testlib network KCoreAddons KWidgetsAddons KConfigCore KF5Package
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
about.cpp \
colorscheme.cpp \
gtk.cpp \
icons.cpp \
license.cpp \
main.cpp \
mainwindow.cpp \
plasmastyle.cpp \
utils.cpp \
wallpaper.cpp \
kvantumstyle.cpp \
lnflistmodel.cpp \
lnflogic.cpp
HEADERS += \
headers/colorscheme.h \
headers/gtk.h \
headers/about.h \
headers/icons.h \
headers/license.h \
headers/mainwindow.h \
headers/plasmastyle.h \
headers/utils.h \
headers/wallpaper.h \
headers/kvantumstyle.h \
headers/lnflistmodel.h \
headers/lnflogic.h \\
libs/Cron.h \
libs/InterruptableSleep.h \
libs/Scheduler.h
FORMS += \
ui/about.ui \
ui/license.ui \
ui/mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
resources/resources.qrc
# Managing what make install does
target.path = /usr/bin/
desktop.path = /usr/share/applications/
desktop.files += koi.desktop
icons.path = /usr/share/icons/hicolor/scalable/apps/
icons.files += resources/icons/koi.svg\
resources/icons/koi_tray.svg
INSTALLS += target desktop icons
这是主/父目录中的cmakelists.txt(1)文件
cmake_minimum_required(VERSION 3.17.0 FATAL_ERROR)
project(koi LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOUIC_SEARCH_PATHS ui)
if(CMAKE_VERSION VERSION_LESS "3.7.0")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()
#ECM is extra cmake modules and is used by kde frameworks
find_package(ECM ${KF5_MIN_VER} CONFIG REQUIRED )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ")
set(QT_MIN_VERSION "5.14.0")
set(KF5_MIN_VERSION "5.38.0")
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake ${ECM_KDE_MODULE_DIR})
include(KDEInstallDirs)
include(KDECMakeSettings)
include(ECMOptionalAddSubdirectory)
include(ECMAddAppIcon)
include(ECMInstallIcons)
find_package(Qt5 ${REQUIRED_QT_VERSION} COMPONENTS NO_MODULE REQUIRED Network DBus Gui Core Test)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS CoreAddons WidgetsAddons Config Package I18n Service)
add_subdirectory(src)
这是我试图转换的src目录中的第二个cmakelists.txt(2)文件
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
#QT and kde libraries
set(QT5_LIBRARIES Qt5::Core Qt5::Gui Qt5::DBus Qt5::Network Qt5::Test)
set(KF5_LIBRAIRES KF5::CoreAddons KF5::WidgetsAddons KF5::ConfigCore KF5::ConfigGui KF5::Package KF5::I18n KF5::Service)
set(koi_SRCS
about.cpp
colorscheme.cpp
gtk.cpp
icons.cpp
license.cpp
main.cpp
mainwindow.cpp
plasmastyle.cpp
utils.cpp
wallpaper.cpp
kvantumstyle.cpp
# lnflistmodel.cpp
# lnflogic.cpp
)
add_executable(koi ${koi_SRCS})
target_link_libraries(koi ${QT5_LIBRARIES} ${KF5_LIBRAIRES})
当我试图建立项目时,它说
[main] Building folder: Koi-1
[build] Starting build
[proc] Executing command: /usr/bin/cmake --build /home/da-viper/Documents/Development/KDE/Koi-1/build --config Debug --target all -- -j 10
[build] [1/1 100% :: 0.182] Linking CXX executable src/koi
[build] FAILED: src/koi
[build] : && /usr/bin/g++ -std=c++11 -g src/CMakeFiles/koi.dir/koi_autogen/mocs_compilation.cpp.o src/CMakeFiles/koi.dir/about.cpp.o src/CMakeFiles/koi.dir/colorscheme.cpp.o src/CMakeFiles/koi.dir/gtk.cpp.o src/CMakeFiles/koi.dir/icons.cpp.o src/CMakeFiles/koi.dir/license.cpp.o src/CMakeFiles/koi.dir/main.cpp.o src/CMakeFiles/koi.dir/mainwindow.cpp.o src/CMakeFiles/koi.dir/plasmastyle.cpp.o src/CMakeFiles/koi.dir/utils.cpp.o src/CMakeFiles/koi.dir/wallpaper.cpp.o src/CMakeFiles/koi.dir/kvantumstyle.cpp.o -o src/koi /usr/lib/libQt5Network.so.5.15.0 /usr/lib/libQt5Test.so.5.15.0 /usr/lib/libKF5WidgetsAddons.so.5.72.0 /usr/lib/libKF5ConfigGui.so.5.72.0 /usr/lib/libKF5Package.so.5.72.0 /usr/lib/libKF5Service.so.5.72.0 /usr/lib/libQt5Widgets.so.5.15.0 /usr/lib/libQt5Gui.so.5.15.0 /usr/lib/libKF5CoreAddons.so.5.72.0 /usr/lib/libKF5ConfigCore.so.5.72.0 /usr/lib/libQt5DBus.so.5.15.0 /usr/lib/libKF5I18n.so.5.72.0 /usr/lib/libQt5Xml.so.5.15.0 /usr/lib/libQt5Core.so.5.15.0 && :
[build] /usr/bin/ld: src/CMakeFiles/koi.dir/mainwindow.cpp.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
[build] /usr/bin/ld: /usr/lib/libpthread.so.0: error adding symbols: DSO missing from command line
[build] collect2: error: ld returned 1 exit status
[build] ninja: build stopped: subcommand failed.
[build] Build finished with exit code 1
有没有办法得到帮助来隐藏它/我还缺少什么让它工作
谢谢尝试添加
查找包(线程)
并链接无法根据线程::线程
构建的目标,例如目标链接库(myTarget Threads::Threads)
。这一次错误更改为/usr/bin/ld:找不到-lkoi_HEADER koi_HEADER是我设置的头文件,这是我的新目标库target_link_库(${PROJECT_NAME}koi_HEADERS)。这是链接器抱怨它试图链接到名为libkoi_HEADER的库。因此
或类似。您需要显示如何在CMakeLists.txt
中定义koi_头。如果要传播某些包含目录,请将其设置为接口
库。尝试添加查找包(线程)
,并链接无法针对线程::线程
构建的目标,例如目标链接库(myTarget Threads::Threads)
。这一次错误更改为/usr/bin/ld:找不到-lkoi_HEADER koi_HEADER是我设置的头文件,这是我的新目标库target_link_库(${PROJECT_NAME}koi_HEADERS)。这是链接器抱怨它试图链接到名为libkoi_HEADER的库。因此
或类似。您需要显示如何在CMakeLists.txt
中定义koi_头。如果这是为了传播一些include目录,那么将其设置为接口
库。