CMakeLists.txt 4.7 KB
Newer Older
1 2
cmake_minimum_required(VERSION 3.5)

D
dev@dev.com 已提交
3
project(qtv_mainframe VERSION 1.0 LANGUAGES CXX)
M
manjaro-xfce 已提交
4

5 6 7 8 9 10
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

丁劲犇's avatar
丁劲犇 已提交
11
set(CMAKE_CXX_STANDARD 17)
12 13
set(CMAKE_CXX_STANDARD_REQUIRED ON)

14

15
if (${QTV_ACTIVEX})
丁劲犇's avatar
丁劲犇 已提交
16 17
	find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network AxServer REQUIRED)
	find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network AxServer REQUIRED)
18
else()
丁劲犇's avatar
丁劲犇 已提交
19 20
	find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network REQUIRED)
	find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network REQUIRED)
21
endif()
22

23
set(PRJ_HEADERS
丁劲犇's avatar
丁劲犇 已提交
24 25 26 27 28 29 30 31 32 33
	osm_frame_widget.h
	osmtiles/cProjectionMercator.h
	osmtiles/tilesviewer.h
	osmtiles/urlDownloader.h
	osmtiles/layer_tiles.h
	osmtiles/layer_browser.h
	osmtiles/layer_interface.h
	osmtiles/viewer_interface.h
	osmtiles/layer_tiles_page.h
	interface_utils.h
34
)
35 36

set(PRJ_SOURCES
丁劲犇's avatar
丁劲犇 已提交
37 38 39 40 41 42 43
	osm_frame_widget.cpp
	osmtiles/cProjectionMercator.cpp
	osmtiles/tilesviewer.cpp
	osmtiles/urlDownloader.cpp
	osmtiles/layer_tiles.cpp
	osmtiles/layer_browser.cpp
	osmtiles/layer_tiles_page.cpp
44
)
45 46

set(PRJ_FORMS
丁劲犇's avatar
丁劲犇 已提交
47 48
	osm_frame_widget.ui
	osmtiles/layer_tiles_page.ui
49
)
50 51

set(PRJ_RESOURCES
丁劲犇's avatar
丁劲犇 已提交
52 53 54
	resource/resource.qrc
	qtviewer_planetosm_zh_CN.ts
	qtaxviewer_planetosm.rc
55
)
56 57 58

# ========================Exe========================
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
丁劲犇's avatar
丁劲犇 已提交
59
	qt_add_executable(qtviewer_planetosm
60 61
	MANUAL_FINALIZATION
	main.cpp
62 63
	listen_thread.cpp
	listen_thread.h
64 65 66 67
	${PRJ_HEADERS}
	${PRJ_SOURCES}
	${PRJ_FORMS}
	${PRJ_RESOURCES}
丁劲犇's avatar
丁劲犇 已提交
68
	)
69 70 71 72
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET qtviewer_planetosm APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
73
else()
丁劲犇's avatar
丁劲犇 已提交
74
	if(ANDROID)
75
	add_library(qtviewer_planetosm SHARED
丁劲犇's avatar
丁劲犇 已提交
76 77 78 79 80 81 82
		main.cpp
		listen_thread.cpp
		listen_thread.h
		${PRJ_HEADERS}
		${PRJ_SOURCES}
		${PRJ_FORMS}
		${PRJ_RESOURCES}
83
	)
丁劲犇's avatar
丁劲犇 已提交
84 85
	# Define properties for Android with Qt 5 after find_package() calls as:
	#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
86
else()
丁劲犇's avatar
丁劲犇 已提交
87
	add_executable(qtviewer_planetosm
88
	main.cpp
89 90
	listen_thread.cpp
	listen_thread.h
91 92 93 94
	${PRJ_HEADERS}
	${PRJ_SOURCES}
	${PRJ_FORMS}
	${PRJ_RESOURCES}
丁劲犇's avatar
丁劲犇 已提交
95
	)
96
endif()
97 98
endif()

99
target_link_libraries(qtviewer_planetosm PRIVATE
丁劲犇's avatar
丁劲犇 已提交
100 101
	Qt${QT_VERSION_MAJOR}::Widgets
	Qt${QT_VERSION_MAJOR}::Network)
102 103

set_target_properties(qtviewer_planetosm PROPERTIES
丁劲犇's avatar
丁劲犇 已提交
104 105 106 107 108
	MACOSX_BUNDLE_GUI_IDENTIFIER qtv.planetosm.viewer
	MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
	MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
	MACOSX_BUNDLE TRUE
	WIN32_EXECUTABLE TRUE
109
)
110 111

if(QT_VERSION_MAJOR EQUAL 6)
丁劲犇's avatar
丁劲犇 已提交
112
	qt_finalize_executable(qtviewer_planetosm)
113 114 115
endif()

# ========================Widget Library========================
116
add_library(qplanetosm_widget SHARED
丁劲犇's avatar
丁劲犇 已提交
117 118 119 120 121 122
	qtwidget_planetosm.h
	qtwidget_planetosm.cpp
	${PRJ_HEADERS}
	${PRJ_SOURCES}
	${PRJ_FORMS}
	${PRJ_RESOURCES}
123 124
)

125
target_compile_definitions(qplanetosm_widget PRIVATE PLANETOSM_EXPORT_DLL)
126
target_link_libraries(qplanetosm_widget PRIVATE
丁劲犇's avatar
丁劲犇 已提交
127 128
	Qt${QT_VERSION_MAJOR}::Widgets
	Qt${QT_VERSION_MAJOR}::Network
129 130 131 132 133
)


#==========================ActiveX==========================
if (WIN32 AND ${QTV_ACTIVEX})
丁劲犇's avatar
丁劲犇 已提交
134
	if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
D
dev@dev.com 已提交
135
	qt6_add_axserver_library(axplanetosm SHARED NO_AX_SERVER_REGISTRATION
丁劲犇's avatar
丁劲犇 已提交
136 137 138 139 140 141 142
		qtaxviewer_planetosm.def
		qtaxviewer_planetosm.h
		qtaxviewer_planetosm.cpp
		${PRJ_HEADERS}
		${PRJ_SOURCES}
		${PRJ_FORMS}
		${PRJ_RESOURCES}
143
	)
D
dev@dev.com 已提交
144
	add_custom_command(TARGET axplanetosm
丁劲犇's avatar
丁劲犇 已提交
145 146 147 148 149 150 151
			 POST_BUILD
			 COMMAND echo If you want to reg server, please set Qt BIN PATH first
			 COMMAND idc.exe \"$<TARGET_FILE:axplanetosm>\" /regserverperuser
			 #COMMAND regsvr32 \"$<TARGET_FILE:axplanetosm>\"
			 #COMMAND idc.exe \"$<TARGET_FILE:axplanetosm>\" /regserver
			 )
	else()
D
dev@dev.com 已提交
152
	add_library(axplanetosm SHARED
丁劲犇's avatar
丁劲犇 已提交
153 154 155 156 157 158 159 160
		qtaxviewer_planetosm.def
		qtaxviewer_planetosm.h
		qtaxviewer_planetosm.cpp
		${PRJ_HEADERS}
		${PRJ_SOURCES}
		${PRJ_FORMS}
		${PRJ_RESOURCES}
		# C:\Qt\6.2.4\msvc2019_64\bin\idc.exe D:/projects/build-qtv.planet-Qt62vc-Release/bin/axplanetosm.dll /regserver""
D
dev@dev.com 已提交
161 162 163 164 165 166 167 168 169
	)
	add_custom_command(TARGET axplanetosm
			 POST_BUILD
			 COMMAND idc.exe \"$<TARGET_FILE:axplanetosm>\" /idl \"$<TARGET_FILE:axplanetosm>.idl\" -version 1.0
			 COMMAND midl.exe \"$<TARGET_FILE:axplanetosm>.idl\" /nologo /tlb  \"$<TARGET_FILE:axplanetosm>.tlb\"
			 COMMAND idc.exe \"$<TARGET_FILE:axplanetosm>\" /tlb \"$<TARGET_FILE:axplanetosm>.tlb\"
			 COMMAND idc.exe \"$<TARGET_FILE:axplanetosm>\" /regserverperuser
			 #COMMAND idc.exe \"$<TARGET_FILE:axplanetosm>\" /regserver
			 )
170 171
endif()
target_link_libraries(axplanetosm PRIVATE
丁劲犇's avatar
丁劲犇 已提交
172 173 174
	Qt${QT_VERSION_MAJOR}::Widgets
	Qt${QT_VERSION_MAJOR}::Network
	Qt${QT_VERSION_MAJOR}::AxServer
175 176 177
)

endif()