COMPASSi/trunk/code/3rd/CCSReport_2/CMakeLists.txt

302 lines
11 KiB
CMake
Raw Permalink Normal View History

2025-06-25 15:06:42 +08:00
cmake_minimum_required(VERSION 3.5)
project(CCSReport_2)
set(CMAKE_CXX_STANDARD 17)
add_definitions(-DCCS_COMPASSREPORT_LIB)
add_definitions(-DRTFWRITER_LIB)
add_definitions(-DZLIB_DLL)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
IF(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
add_compile_options("/utf-8")
#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
ENDIF(MSVC)
if(WIN32)
add_definitions(-DCOMPASS_WINDOWS)
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
set(CMAKE_DEBUG_POSTFIX "d")
else()
add_definitions(-DCOMPASS_UNIX)
add_compile_options(-fPIC)
add_compile_options(-fpermissive)
set(CMAKE_DEBUG_POSTFIX "d")
set(CMAKE_PREFIX_PATH "/opt/Qt/5.15.2/gcc_64") # 替换为您的 Qt 安装路径
endif()
find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets PrintSupport Svg Xml)
if(Qt5_FOUND)
message(STATUS "Qt5 found.")
else()
message(FATAL_ERROR "Qt5 not found.")
endif()
set(PROJECTS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/bands)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/base)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/exporter)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/items)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/serializators)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/translation)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils/log)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils/rtf)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils/podofo)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils/podofo/base)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils/podofo/doc)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils/podofo/base/util)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
# 自动查找当前目录下的所有 .cpp 文件
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src srcs_src)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/bands src_bands)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/base src_base)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/exporter src_exporter)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/items src_items)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/serializators src_serializators)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/translation src_translation)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/utils src_utils)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/utils/log src_log)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/utils/rtf src_rtf)
# 查找当前目录下所有的 .h 文件(可选)
file(GLOB_RECURSE HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
message(STATUS "CPP_FILES: ${CPP_FILES}")
#qt5_wrap_cpp(MOC_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/include/common_types.h)
set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}")
add_library(${PROJECT_NAME} SHARED
${HEADER_FILES}
${srcs_src}
${src_bands}
${src_base}
${src_exporter}
${src_items}
${src_serializators}
${src_translation}
${src_utils}
${src_log}
${src_rtf}
)
if(WIN32)
#添加jpeg
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/win64/include")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/win64/lib")
# target_link_libraries(${PROJECT_NAME} PRIVATE turbojpeg)
#添加libtiff
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libtiff/win64/include")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libtiff/win64/lib")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libtiff/win64/lib/pkgconfig")
# target_link_libraries(${PROJECT_NAME} PRIVATE tiff)
# 添加Freetype
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/freetype/win64/include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/freetype/win64/include/config")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/freetype/win64/lib")
# 添加libpng
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libpng/win64/include")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libpng/win64/lib")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libpng/win64/lib/pkgconfig")
#添加 zlib 头文件路径
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/zlib/win64")
#添加 zlib 库路径
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/zlib/win64")
#添加Podofo
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/include/podofo")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/include/podofo/base")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/include/podofo/doc")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/include/podofo/base/util")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/lib")
else()
#添加jpeg
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/arm_linux/include")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/arm_linux/lib")
# target_link_libraries(${PROJECT_NAME} PRIVATE turbojpeg)
#添加libtiff
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libtiff/arm_linux/include")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libtiff/arm_linux/lib")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libtiff/arm_linux/lib/pkgconfig")
# target_link_libraries(${PROJECT_NAME} PRIVATE tiff)
# 添加Freetype
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/freetype/arm_linux/include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/freetype/arm_linux/include/config")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/freetype/arm_linux/lib")
# 添加libpng
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libpng/arm_linux/include")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libpng/arm_linux/lib")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/libpng/arm_linux/lib/pkgconfig")
#添加 zlib 头文件路径
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/zlib/arm_linux")
#添加 zlib 库路径
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/zlib/arm_linux")
#添加Podofo
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/include/podofo")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/include/podofo/base")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/include/podofo/doc")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/include/podofo/base/util")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/lib")
#添加 openssl 头文件路径
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/openssl/include")
#添加 openssl 库路径
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/openssl/lib")
#添加bzip2
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/bzip2/include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/bzip2/lib")
#添加brotli
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/brotli/include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/brotli/lib")
endif()
if(WIN32)
target_link_libraries(${PROJECT_NAME} PUBLIC
Qt5::Widgets
Qt5::Core
Qt5::Gui
Qt5::PrintSupport
Qt5::Svg
Qt5::Xml
"${CMAKE_CURRENT_SOURCE_DIR}/zlib/win64/zlib.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/win64/lib/jpeg.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/libtiff/win64/lib/tiff.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/freetype/win64/lib/freetype.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/libpng/win64/lib/libpng15.lib"
ws2_32
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_link_libraries(${PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/lib/podofod.lib)
else()
target_link_libraries(${PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/podofo/win64/lib/podofo.lib)
endif()
else()
target_link_libraries(${PROJECT_NAME} PUBLIC
Qt5::Widgets
Qt5::Core
Qt5::Gui
Qt5::PrintSupport
Qt5::Svg
Qt5::Xml
"${CMAKE_CURRENT_SOURCE_DIR}/zlib/arm_linux/libz.so"
"${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/arm_linux/lib/libjpeg.so"
"${CMAKE_CURRENT_SOURCE_DIR}/libtiff/arm_linux/lib/libtiff.so"
"${CMAKE_CURRENT_SOURCE_DIR}/freetype/arm_linux/lib/libfreetype.so"
"${CMAKE_CURRENT_SOURCE_DIR}/libpng/arm_linux/lib/libpng.so"
"${CMAKE_CURRENT_SOURCE_DIR}/openssl/lib/libssl.so"
"${CMAKE_CURRENT_SOURCE_DIR}/openssl/lib/libcrypto.so"
"${CMAKE_CURRENT_SOURCE_DIR}/bzip2/lib/libbz2.so.1.0"
"${CMAKE_CURRENT_SOURCE_DIR}/brotli/lib/libbrotlidec.so"
"${CMAKE_CURRENT_SOURCE_DIR}/brotli/lib/libbrotlicommon.so"
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_link_libraries(${PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/lib/libpodofod.so)
else()
target_link_libraries(${PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/podofo/arm_linux/lib/libpodofo.so)
endif()
endif()
#target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/zlib/zlib.lib)
#target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/zlib/zlibd.lib)
# 构建 PoDoFo 为动态库
# set(PODOFO_BUILD_SHARED ON CACHE BOOL "Build PoDoFo as shared library")
# set(PODOFO_BUILD_STATIC OFF CACHE BOOL "Don't build PoDoFo as static library")
# #set(PODOFO_BUILD_DEPS OFF CACHE BOOL "Build dependencies like zlib internally")
# set(PoDoFo_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
# if(WIN32)
# set(PODOFO_LIB_DEPENDS
# "${CMAKE_CURRENT_SOURCE_DIR}/zlib/win64/zlib.lib"
# "${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/win64/lib/jpeg.lib"
# "${CMAKE_CURRENT_SOURCE_DIR}/libtiff/win64/lib/tiff.lib"
# "${CMAKE_CURRENT_SOURCE_DIR}/freetype/win64/lib/freetype.lib"
# "${CMAKE_CURRENT_SOURCE_DIR}/libpng/win64/lib/libpng15.lib"
# ws2_32
# )
# else()
# set(PODOFO_LIB_DEPENDS
# "${CMAKE_CURRENT_SOURCE_DIR}/zlib/arm_linux/libz.so"
# "${CMAKE_CURRENT_SOURCE_DIR}/jpeglib/arm_linux/lib/libjpeg.so"
# "${CMAKE_CURRENT_SOURCE_DIR}/libtiff/arm_linux/lib/libtiff.so"
# "${CMAKE_CURRENT_SOURCE_DIR}/freetype/arm_linux/lib/libfreetype.so"
# "${CMAKE_CURRENT_SOURCE_DIR}/libpng/arm_linux/lib/libpng15.so"
# # ws2_32
# )
# endif()
# # 添加podofo源码作为子目录
# add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/include/utils/podofo)
# #链接 podofo 库
# target_link_libraries(${PROJECT_NAME} PRIVATE ${PODOFO_DEPEND_TARGET})
if(WIN32)
# 根据构建类型链接不同的库
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(DLLFILE "${PROJECTS_PATH}/build/${CMAKE_BUILD_TYPE}/CCSReport_2d.dll")
set(LIBFILE "${PROJECTS_PATH}/build/${CMAKE_BUILD_TYPE}/CCSReport_2d.lib")
else()
set(DLLFILE "${PROJECTS_PATH}/build/${CMAKE_BUILD_TYPE}/CCSReport_2.dll")
set(LIBFILE "${PROJECTS_PATH}/build/${CMAKE_BUILD_TYPE}/CCSReport_2.lib")
endif()
else()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
else()
endif()
endif()