如何通过CMake添加QScintilla?

neekobn8  于 2024-01-09  发布在  其他
关注(0)|答案(1)|浏览(153)

我尝试使用QScintilla来开发自己的文本编辑器。我已经使用QMake超过3年了,我知道添加库的方法是

config += QScintilla2

字符串
但我的问题是,如何在CMake中添加(或目标链接)库?
我试过使用target_link_library(QScintilla),它报告“找不到名为'QScintilla'的目标”和类似的东西。如何解决它?
顺便说一下,我电脑上安装的QScintilla是用QMake构建的。我不知道它是否与CMake兼容。

oknrviil

oknrviil1#

不幸的是,CMake和QMake不兼容,你是对的。相反,你应该将构建的结果复制并粘贴到包含CMake文件CMakeLists.txt的目录下的任何文件夹(在我的例子中是lib/qt5_qscintilla),以及Riverbank Computing提供的头文件的Qsci文件夹。
例如,在Windows和Linux上,文件是libqscintilla2_qt5.a;在macOS上,文件以扩展名.dylib(动态库,抱歉我现在不能告诉你文件名)结束。
那么,试试这个:

cmake_minimum_required(VERSION 3.5)
project(TestingScintilla VERSION 1.0 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
find_package(QT${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
# ... (Exactly same for Gui and Widgets)
set(QSCINTILLA_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/lib/qt5_qscintilla/include/Qsci")
set(QSCINTILLA_LIBRARY "${CMAKE_CURRENT_LIST_DIR}/lib/qt5_qscintilla/libqscintilla2_qt5.a")
# Directory may vary. Change them to where your files are located.
include_directories(${QSCINTILLA_INCLUDE_DIR})

# ...
# ...
# ...
target_link_libraries(TestingScintilla PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(TestingScintilla PRIVATE ${QSCINTILLA_LIBRARY})

字符串

相关问题