我尝试使用QScintilla来开发自己的文本编辑器。我已经使用QMake超过3年了,我知道添加库的方法是
QScintilla
QMake
config += QScintilla2
字符串但我的问题是,如何在CMake中添加(或目标链接)库?我试过使用target_link_library(QScintilla),它报告“找不到名为'QScintilla'的目标”和类似的东西。如何解决它?顺便说一下,我电脑上安装的QScintilla是用QMake构建的。我不知道它是否与CMake兼容。
target_link_library(QScintilla)
CMake
oknrviil1#
不幸的是,CMake和QMake不兼容,你是对的。相反,你应该将构建的结果复制并粘贴到包含CMake文件CMakeLists.txt的目录下的任何文件夹(在我的例子中是lib/qt5_qscintilla),以及Riverbank Computing提供的头文件的Qsci文件夹。例如,在Windows和Linux上,文件是libqscintilla2_qt5.a;在macOS上,文件以扩展名.dylib(动态库,抱歉我现在不能告诉你文件名)结束。那么,试试这个:
CMakeLists.txt
lib/qt5_qscintilla
Qsci
libqscintilla2_qt5.a
.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})
字符串
1条答案
按热度按时间oknrviil1#
不幸的是,CMake和QMake不兼容,你是对的。相反,你应该将构建的结果复制并粘贴到包含CMake文件
CMakeLists.txt
的目录下的任何文件夹(在我的例子中是lib/qt5_qscintilla
),以及Riverbank Computing提供的头文件的Qsci
文件夹。例如,在Windows和Linux上,文件是
libqscintilla2_qt5.a
;在macOS上,文件以扩展名.dylib
(动态库,抱歉我现在不能告诉你文件名)结束。那么,试试这个:
字符串