-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathCMakeLists.back.in
114 lines (90 loc) · 3.79 KB
/
CMakeLists.back.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
cmake_minimum_required(VERSION 3.7)
if (NOT DEFINED VERSION)
set(VERSION 5.8.0.5)
endif ()
#common resource names
set(APP_BIN_NAME "deepin-reader")
set(APP_QRC "${CMAKE_CURRENT_SOURCE_DIR}/resources/resources.qrc")
set(APP_TRANS_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/translate_generation.sh")
set(APP_DESKTOP "${CMAKE_CURRENT_SOURCE_DIR}/src/deepin-reader.desktop")
set(APP_ICON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/deepin-reader.svg")
project(${APP_BIN_NAME})
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--as-needed -fPIE") #-Wl,--as-needed 减少无效的库链接,用不到的库需要清理
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") #对DApplication 进行加速
if (CMAKE_BUILD_TYPE MATCHES Debug)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wextra")
# Enable Qt builtin debug mode
add_definitions("-DQT_MESSAGELOGCONTEXT")
else()
# -Wl, -O2 Enable linker optimizations
# -Wl, --gc-sections Remove unused code resulting from -fdsta-sections and
# -ffunction-sections
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O2 -Wl,-O1 -Wl,--gc-sections")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2 -Wl,-O1 -Wl,--gc-sections")
endif()
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "sw_64")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mieee")
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips64")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -ftree-vectorize -march=loongson3a -mhard-float -mno-micromips -mno-mips16 -flax-vector-conversions -mloongson-ext2 -mloongson-mmi -Wl,--as-needed")
endif ()
#Generate the qm file
execute_process(COMMAND bash ${APP_TRANS_SCRIPT} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/")
macro(SUBDIRLIST result curdir)
file(GLOB children RELATIVE ${curdir} ${curdir}/*)
set(dirlist "")
foreach(child ${children})
if(IS_DIRECTORY ${curdir}/${child})
LIST(APPEND dirlist ${child})
endif()
endforeach()
set(${result} ${dirlist})
endmacro()
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/deepin-pdfium/include)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/deepin-pdfium/lib)
SUBDIRLIST(all_src ${CMAKE_CURRENT_SOURCE_DIR}/src)
#Include all app own subdirectorys
foreach(subdir ${all_src})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/${subdir})
endforeach()
file(GLOB_RECURSE READER_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/src/*.h)
file(GLOB_RECURSE READER_SRC ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)
# Find the library
find_package(PkgConfig REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5DBus REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5PrintSupport REQUIRED)
find_package(Qt5Sql REQUIRED)
find_package(DtkWidget REQUIRED)
pkg_search_module(djvulibre REQUIRED ddjvuapi)
include_directories(${ddjvuapi_INCLUDE_DIRS})
# Tell CMake to create the executable
add_executable(${PROJECT_NAME} ${READER_SRC} ${APP_QRC} ${READER_INCLUDE})
target_include_directories(${APP_BIN_NAME}
PUBLIC ${DtkWidget_INCLUDE_DIRS} ${OBJECT_BINARY_DIR})
target_link_libraries(${APP_BIN_NAME}
deepin-pdfium
${DtkWidget_LIBRARIES}
${djvulibre_LIBRARIES}
Qt5::Core
Qt5::Gui
Qt5::Widgets
Qt5::DBus
Qt5::Sql
Qt5::PrintSupport
)
set(CMAKE_INSTALL_PREFIX /usr)
# Install files
install(TARGETS deepin-reader DESTINATION bin)
file(GLOB APP_QM_FILES "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.qm")
install(FILES ${APP_QM_FILES} DESTINATION share/deepin-reader/translations)
install(FILES ${APP_DESKTOP} DESTINATION share/applications)
install(FILES ${APP_ICON_FILE} DESTINATION /usr/share/icons/hicolor/scalable/apps)