-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
188 lines (143 loc) · 5.26 KB
/
CMakeLists.txt
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# qTagger Cmake build script
cmake_minimum_required( VERSION 2.8.11 )
# set project's name
project( QTAGGER )
message(STATUS "System: " ${CMAKE_HOST_SYSTEM_NAME} " " ${CMAKE_HOST_SYSTEM_VERSION})
message(STATUS "Processor: " ${CMAKE_HOST_SYSTEM_PROCESSOR})
find_package(Qt5Widgets 5.2.0 REQUIRED)
if (UNIX)
include(FindPkgConfig)
endif (UNIX)
# ------ version defination --------------------------
set(QTAGGER_VERSION "1.0.1")
add_definitions( -DVERSION="${QTAGGER_VERSION}")
# ------ build type ------------------------
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif(NOT CMAKE_BUILD_TYPE)
if(${CMAKE_BUILD_TYPE} MATCHES "Release")
add_definitions(-DNDEBUG)
add_definitions(-DQT_NO_DEBUG_OUTPUT)
add_definitions("-O2")
endif(${CMAKE_BUILD_TYPE} MATCHES "Release")
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
# dislpay all compile warnings
add_definitions("-Wall")
# ------ install prefix --------------------------
set(CMAKE_INSTALL_PREFIX "/usr")
add_definitions( -DPREFIX="${CMAKE_INSTALL_PREFIX}")
message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX})
# long live cmake + qt :)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORC ON)
# ------ files --------------------------
set(QTAGGER_SRC
src/main.cpp
src/aboutdialog.cpp
src/config.cpp
src/configdialog.cpp
src/qtagger.cpp
src/tag.cpp
src/tagaudio.cpp
src/mainwindow.cpp
src/trackfileitem.cpp
src/trackmodel.cpp
)
# Qt resource file
set( QTAGGER_QRC qtagger.qrc )
# genereating resource cpp
qt5_add_resources( QRC_SOURCES ${QTAGGER_QRC} )
#------- includes -------------
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
if(NOT UNIX)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/common/include)
endif(NOT UNIX)
# ------ taglib --------------------
if(UNIX)
pkg_check_modules(TAGLIB taglib)
endif(UNIX)
if(WIN32)
set (TAGLIB_LIBRARY_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src/common/taglib-1.6.1-bin/lib)
find_library(TAGLIB_LIBRARIES tag)
set(${TAGLIB_LIBRARIES})
endif(WIN32)
link_directories(${TAGLIB_LIBRARY_DIRS})
#------- distclean target [unix] ----------
if(UNIX)
add_custom_target(distclean @echo cleaning for source distribution)
add_custom_command(
COMMENT "distribution clean"
COMMAND make
ARGS -C ${CMAKE_CURRENT_BINARY_DIR} clean
COMMAND find
ARGS ${CMAKE_CURRENT_BINARY_DIR} -name "CMakeCache.txt" | xargs rm -rf
COMMAND find
ARGS ${CMAKE_CURRENT_BINARY_DIR} -name "CMakeFiles" | xargs rm -rf
COMMAND find
ARGS ${CMAKE_CURRENT_BINARY_DIR} -name "Makefile" | xargs rm -rf
COMMAND find
ARGS ${CMAKE_CURRENT_BINARY_DIR} -name \"*.cmake\" | xargs rm -rf
COMMAND find
ARGS ${CMAKE_CURRENT_SOURCE_DIR}/localize -name "*.qm" | xargs rm -rf
COMMAND rm
ARGS -rf ${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt
TARGET distclean
)
endif(UNIX)
#------- find lrelease & create qms ------------
# find lrelease binary
if(NOT QT_LRELEASE_EXECUTABLE)
find_program(QT_LRELEASE_EXECUTABLE
NAMES lrelease
PATHS ${QT_BINARY_DIR}
NO_DEFAULT_PATH
)
endif(NOT QT_LRELEASE_EXECUTABLE)
# debian hack
if(EXISTS ${QT_BINARY_DIR}/lrelease-qt4)
set(QT_LRELEASE_EXECUTABLE ${QT_BINARY_DIR}/lrelease-qt4)
endif(EXISTS ${QT_BINARY_DIR}/lrelease-qt4)
if(QT_LRELEASE_EXECUTABLE)
message(STATUS "Found lrelease executable: " ${QT_LRELEASE_EXECUTABLE})
message(STATUS "Generating localize ...")
execute_process(COMMAND find ${CMAKE_CURRENT_SOURCE_DIR}/localize -name *.ts COMMAND xargs ${QT_LRELEASE_EXECUTABLE} -silent)
else(QT_LRELEASE_EXECUTABLE)
message(FATAL_ERROR "Could NOT find lrelease executable")
endif(QT_LRELEASE_EXECUTABLE)
#------- add icon & trmove console in win32 (mingw) ----------
if(WIN32)
if(NOT MSVC)
find_program(WINDRES
NAMES windres.exe
PATHS ${PATH}
NO_DEFAULT_PATH
)
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/qtaggerrc.o
COMMAND ${WINDRES} -I${CMAKE_CURRENT_SOURCE_DIR} -i${CMAKE_CURRENT_SOURCE_DIR}/qtagger.rc
-o ${CMAKE_CURRENT_BINARY_DIR}/qtaggerrc.o )
set(QTAGGER_SRC ${QTAGGER_SRC} ${CMAKE_CURRENT_BINARY_DIR}/qtaggerrc.o)
endif(NOT MSVC)
endif(WIN32)
#------- crating executable -----------
add_executable(qtagger ${QTAGGER_SRC} ${QTAGGER_MOC_CPP} ${QTAGGER_UI_H} ${QRC_SOURCES})
if (UNIX)
target_link_libraries( qtagger Qt5::Widgets ${TAGLIB_LDFLAGS} ${TAGLIB_CFLAGS} )
endif (UNIX)
if(WIN32)
if(NOT MSVC)
set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} "-mwindows")
target_link_libraries( qtagger Qt5::Widgets ${TAGLIB_LIBRARIES} )
endif(NOT MSVC)
endif(WIN32)
#------- installs unix -----------
if(UNIX AND NOT APPLE)
INSTALL(TARGETS qtagger RUNTIME DESTINATION bin)
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/docs/" DESTINATION share/doc/qtagger)
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/img/qtagger.png" DESTINATION share/pixmaps)
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/qtagger.desktop" DESTINATION share/applications)
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/localize/" DESTINATION share/qtagger/localize FILES_MATCHING PATTERN "*.qm")
endif(UNIX AND NOT APPLE)