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("$<$:/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()