mirror of https://gitee.com/cxasm/notepad--.git
cmake/modules: 增加 NOTEPAD_BUILD_BY_SHARED 构建配方
增加 utils.cmake 进行获取在不同平台构建时的目标库的名称
This commit is contained in:
parent
b531ed598c
commit
fc50cf38a2
|
@ -18,7 +18,7 @@
|
|||
set(NOTEPAD_PLUGIN @NOTEPAD_PLUGIN@)
|
||||
set(NOTEPAD_BUILD_BY_QT5 @NOTEPAD_BUILD_BY_QT5@)
|
||||
set(NOTEPAD_BUILD_BY_QT6 @NOTEPAD_BUILD_BY_QT6@)
|
||||
set(NOTEPAD_BUILD_BY_SHARED FALSE)
|
||||
set(NOTEPAD_BUILD_BY_SHARED @NOTEPAD_BUILD_BY_SHARED@)
|
||||
set(NOTEPAD_PLUGIN_CORELIB @NOTEPAD_PLUGIN_CORELIB@)
|
||||
# 由插件开发者进行参考的 "Notepad 提供的插件安装目录(位置)"
|
||||
set(NOTEPAD_PLUGIN_EXTERNAL_PLUGIN_INSTALL_DIRECTORY
|
||||
|
@ -196,17 +196,18 @@ macro(add_notepad_plugin PLUGIN_VAR PLUGIN_SRC)
|
|||
|
||||
# 这是插件实现接口中增加的 NOTEPAD_PLUGIN_MANAGER 宏开关
|
||||
# 来处理减少 Notepad-- 在编译时不需要,但在插件编译时所需要的模板内容
|
||||
if(WIN32)
|
||||
|
||||
if(WIN32 AND NOTEPAD_BUILD_BY_SHARED)
|
||||
target_compile_definitions(${PLUGIN_VAR}
|
||||
PUBLIC
|
||||
NOTEPAD_PLUGIN_MANAGER
|
||||
QSCINTILLA_DLL # 在 Windows 中使用 QSci 库时应该采用 Q_DECL_IMPORT
|
||||
# 控制 QSCINTILLA_EXPORT 符号应为 Q_DECL_IMPORT
|
||||
# QSCINTILLA_DLL # 废弃,插件构建中不需要明确显式声明此宏
|
||||
)
|
||||
else()
|
||||
target_compile_definitions(${PLUGIN_VAR}
|
||||
PUBLIC NOTEPAD_PLUGIN_MANAGER)
|
||||
endif(WIN32)
|
||||
PUBLIC
|
||||
NOTEPAD_PLUGIN_MANAGER)
|
||||
endif(WIN32 AND NOTEPAD_BUILD_BY_SHARED)
|
||||
|
||||
endmacro(add_notepad_plugin PLUGIN_VAR PLUGIN_SRC)
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
# 1. 静态化构建库时产出的目标为 libQSci.a
|
||||
# 2. 在此处可对 QSci 目标进行详细的构建计划
|
||||
|
||||
option(NOTEPAD_BUILD_BY_SHARED "指定 Notepad 将构建为动态库" OFF)
|
||||
|
||||
if(TRUE)
|
||||
# add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint)
|
||||
# file(GLOB MOC_HEADER src/qscint/src/Qsci/*.h)
|
||||
|
@ -19,7 +21,11 @@ if(TRUE)
|
|||
# src/qscint/src/Qsci
|
||||
# FAIL: only *.ui will spark_file_glob(MOC_HEADER ...)
|
||||
)
|
||||
spark_add_library(QSci STATIC ${QSciSources} ${MOC_HEADER})
|
||||
if(NOTEPAD_BUILD_BY_SHARED)
|
||||
spark_add_library(QSci SHARED ${QSciSources} ${MOC_HEADER})
|
||||
else()
|
||||
spark_add_library(QSci STATIC ${QSciSources} ${MOC_HEADER})
|
||||
endif(NOTEPAD_BUILD_BY_SHARED)
|
||||
target_include_directories(QSci PRIVATE
|
||||
src/qscint/scintilla/boostregex
|
||||
src/qscint/scintilla/lexlib)
|
||||
|
|
|
@ -55,6 +55,12 @@ if(CMAKE_HOST_UNIX)
|
|||
# 定义一些扩展内容,主要是提供给 CMake 模块文件填充
|
||||
set(NOTEPAD_PLUGIN_CORELIB QSci) # QSci 为构建的 QScintllia 库
|
||||
|
||||
# 将当前平台构建的目标转为平台下的库名称
|
||||
include(cmake/platforms/utils.cmake)
|
||||
get_current_platform_lib_name(NOTEPAD_PLUGIN_CORELIB_NAME
|
||||
${NOTEPAD_BUILD_BY_SHARED}
|
||||
QSci)
|
||||
|
||||
# 定义在插件开发的 CMake 模块中,Notepad-- 是否是基于 QT5 实现
|
||||
# 并自动为插件开发层自动开启相关 Qt 依赖组件
|
||||
# 此部分逻辑将自动提供给 add_notepad_plugin 自行处理
|
||||
|
@ -108,3 +114,4 @@ if(CMAKE_HOST_UNIX)
|
|||
# ------------------ INSTALL PLUGIN CONFIG ------------------ #
|
||||
|
||||
endif(CMAKE_HOST_UNIX)
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
# utils.cmake
|
||||
# 定义一些其它工具函数
|
||||
|
||||
# get_current_platform_lib_name <_VAR> <_IS_IS_SHREAD> <_LIB>
|
||||
# _VAR 用于存储内容的变量
|
||||
# _IS_IS_SHREAD 是否为共享库
|
||||
# _LIB 目标名称
|
||||
function(get_current_platform_lib_name _VAR _IS_SHREAD _LIB)
|
||||
set(_LIB_NAME "")
|
||||
if(WIN32)
|
||||
set(_LIB_NAME ${_LIB}.lib)
|
||||
elseif(UNIX AND NOT APPLE)
|
||||
if(${_IS_SHREAD})
|
||||
set(_LIB_NAME lib${_LIB}.so)
|
||||
else()
|
||||
set(_LIB_NAME lib${_LIB}.a)
|
||||
endif(${_IS_SHREAD})
|
||||
elseif(APPLE)
|
||||
if(${_IS_SHREAD})
|
||||
set(_LIB_NAME lib${_LIB}.dylib)
|
||||
else()
|
||||
set(_LIB_NAME lib${_LIB}.a)
|
||||
endif(${_IS_SHREAD})
|
||||
else()
|
||||
message("ERROR: Unknow current platform")
|
||||
set(_LIB_NAME ${_LIB})
|
||||
endif()
|
||||
message("[utils.cmake] get_current_platform_lib_name: ${_LIB}(${_LIB_NAME}) ")
|
||||
set(${_VAR} ${_LIB_NAME} PARENT_SCOPE)
|
||||
endfunction(get_current_platform_lib_name _VAR _IS_SHREAD _LIB)
|
||||
# 获取当前平台的 lib 名称
|
||||
# 在 Windows 中
|
||||
# 用于编译的静态库与动态库后缀相同: .lib
|
||||
# 并且不是 lib 开头
|
||||
# 在 Linux 中
|
||||
# 用于编译的静态库与动态库后缀分别是:.a 与 .so
|
||||
# 文件名称由 lib 开头
|
||||
# 在 MacOS 中
|
||||
# 用于编译的静态库与动态库后缀分别是:.a 与 .dylib
|
||||
# 文件名称由 lib 开头
|
|
@ -40,6 +40,12 @@ if(CMAKE_HOST_WIN32)
|
|||
# 定义一些扩展内容,主要是提供给 CMake 模块文件填充
|
||||
set(NOTEPAD_PLUGIN_CORELIB QSci) # QSci 为构建的 QScintllia 库
|
||||
|
||||
# 将当前平台构建的目标转为平台下的库名称
|
||||
include(cmake/platforms/utils.cmake)
|
||||
get_current_platform_lib_name(NOTEPAD_PLUGIN_CORELIB_NAME
|
||||
${NOTEPAD_BUILD_BY_SHARED}
|
||||
QSci)
|
||||
|
||||
# 定义在插件开发的 CMake 模块中,Notepad-- 是否是基于 QT5 实现
|
||||
# 并自动为插件开发层自动开启相关 Qt 依赖组件
|
||||
# 此部分逻辑将自动提供给 add_notepad_plugin 自行处理
|
||||
|
|
Loading…
Reference in New Issue