1
1
set (CMAKE_PREFIX_PATH ${QT_LIB_PREFIX} )
2
2
find_package (
3
3
Qt6 ${QT_VERSION}
4
- COMPONENTS Core Gui Widgets Quick
4
+ COMPONENTS Core Gui Widgets Quick WebEngineWidgets
5
5
REQUIRED
6
6
)
7
7
8
8
qt_standard_project_setup (REQUIRES ${QT_VERSION} )
9
9
10
+ if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" )
11
+ set (PLATFORM_EXECUTABLE_HINT MACOSX_BUNDLE )
12
+ endif ()
13
+
10
14
file (GLOB_RECURSE SOURCES Src/*.cpp )
11
- qt_add_executable (Editor ${SOURCES} )
15
+ qt_add_executable (Editor ${PLATFORM_EXECUTABLE_HINT} ${ SOURCES} )
12
16
target_include_directories (Editor PRIVATE Include )
13
- target_link_libraries (Editor PRIVATE Core RHI Runtime Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Quick )
17
+ target_include_directories (Editor PRIVATE ${CPP_HTTP_LIB_SOURCE_DIR} )
18
+ target_link_libraries (Editor PRIVATE Core RHI Runtime Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Quick Qt6::WebEngineWidgets )
14
19
15
20
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
16
21
set (PLATFORM_DEP_TARGET RHI-DirectX12 RHI-Vulkan )
@@ -21,10 +26,26 @@ add_dependencies(Editor ${PLATFORM_DEP_TARGET})
21
26
22
27
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
23
28
set (QT_WIN_DEPLOY_EXECUTABLE ${QT_LIB_PREFIX} /bin/windeployqt.exe )
24
- set (QT_BUILDIN_QML_DIRECTORY ${QT_LIB_PREFIX} /qml )
25
29
add_custom_command (
26
30
TARGET Editor POST_BUILD
27
- COMMAND ${QT_WIN_DEPLOY_EXECUTABLE} $< TARGET_FILE:Editor> --qmldir ${QT_BUILDIN_QML_DIRECTORY} --verbose 0
31
+ # ++ QT 6.9.1 Temporal Fix Start
32
+ # #see https://bugreports.qt.io/browse/QTBUG-137542
33
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_devtools_resources.pak ${QT_LIB_PREFIX} /resources/qtwebengine_devtools_resources.debug.pak
34
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_resources.pak ${QT_LIB_PREFIX} /resources/qtwebengine_resources.debug.pak
35
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_resources_100p.pak ${QT_LIB_PREFIX} /resources/qtwebengine_resources_100p.debug.pak
36
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_resources_200p.pak ${QT_LIB_PREFIX} /resources/qtwebengine_resources_200p.debug.pak
37
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_devtools_resources.pak ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /resources/qtwebengine_devtools_resources.pak
38
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_resources.pak ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /resources/qtwebengine_resources.pak
39
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_resources_100p.pak ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /resources/qtwebengine_resources_100p.pak
40
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${QT_LIB_PREFIX} /resources/qtwebengine_resources_200p.pak ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /resources/qtwebengine_resources_200p.pak
41
+ # -- QT 6.9.1 Temporal Fix End
42
+ COMMAND ${QT_WIN_DEPLOY_EXECUTABLE} $< TARGET_FILE:Editor>
43
+ )
44
+ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" )
45
+ set (QT_MAC_DEPLOY_EXECUTABLE ${QT_LIB_PREFIX} /bin/macdeployqt )
46
+ add_custom_command (
47
+ TARGET Editor POST_BUILD
48
+ COMMAND ${QT_MAC_DEPLOY_EXECUTABLE} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /Editor.app $< IF:$< CONFIG:Debug> ,-no-strip,>
28
49
)
29
50
endif ()
30
51
@@ -47,38 +68,65 @@ AddResourcesCopyCommand(
47
68
)
48
69
# ---- end shaders -----------------------------------------------------------------------------------
49
70
71
+ # ---- begin web project -----------------------------------------------------------------------------
72
+ set (NODEJS_HOME ${3RD_SOURCE_DIR} /Nodejs-${CMAKE_SYSTEM_NAME}-${NODEJS_VERSION} )
73
+ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
74
+ set (NODEJS_PATH ${NODEJS_HOME} )
75
+ set (NPM_EXECUTABLE npm.cmd )
76
+ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" )
77
+ set (NODEJS_BIN_PATH ${NODEJS_HOME} /bin )
78
+ set (NODEJS_MODULES_PATH ${NODEJS_HOME} /lib/node_modules )
79
+ file (REMOVE ${NODEJS_BIN_PATH} /corepack )
80
+ file (REMOVE ${NODEJS_BIN_PATH} /npm )
81
+ file (REMOVE ${NODEJS_BIN_PATH} /npx )
82
+ execute_process (
83
+ COMMAND ln -s ${NODEJS_MODULES_PATH} ${NODEJS_BIN_PATH} /node_modules
84
+ RESULT_VARIABLE LINK_RESULT
85
+ OUTPUT_VARIABLE LINK_OUTPUT
86
+ ERROR_VARIABLE LINK_ERROR
87
+ )
88
+ execute_process (
89
+ COMMAND ln -s ${NODEJS_MODULES_PATH} /npm/bin/npm ${NODEJS_BIN_PATH} /npm
90
+ RESULT_VARIABLE LINK_RESULT
91
+ OUTPUT_VARIABLE LINK_OUTPUT
92
+ ERROR_VARIABLE LINK_ERROR
93
+ )
94
+ execute_process (
95
+ COMMAND ln -s ${NODEJS_MODULES_PATH} /npm/bin/npx ${NODEJS_BIN_PATH} /npx
96
+ RESULT_VARIABLE LINK_RESULT
97
+ OUTPUT_VARIABLE LINK_OUTPUT
98
+ ERROR_VARIABLE LINK_ERROR
99
+ )
100
+ set (NODEJS_PATH "$ENV{PATH} :${NODEJS_BIN_PATH} " )
101
+ set (NPM_EXECUTABLE npm )
102
+ else ()
103
+ message (FATAL_ERROR "Unsupported OS" )
104
+ endif ()
50
105
51
- # ---- begin qml -------------------------------------------------------------------------------------
52
- set (EDITOR_QML_ROOT ${CMAKE_CURRENT_SOURCE_DIR} /Qml )
53
- set (EDITOR_RESOURCE_ROOT ${CMAKE_CURRENT_SOURCE_DIR} /Resource )
54
- get_filename_component (EDITOR_RESOURCE_ROOT_ABSOLUTE ${EDITOR_RESOURCE_ROOT} ABSOLUTE )
55
-
56
- file (GLOB QML_SOURCES ${EDITOR_QML_ROOT} /*.qml )
57
-
58
- list (
59
- APPEND SINGLETON_QML_SOURCES
60
- ETheme.qml )
61
- target_compile_definitions (Editor PRIVATE -DSINGLETON_QML_SOURCES= "${SINGLETON_QML_SOURCES} " )
62
-
63
- # QML only support placed in root dir
64
- foreach (QML_SOURCE ${QML_SOURCES} )
65
- get_filename_component (ALIAS ${QML_SOURCE} NAME )
66
- set_source_files_properties (${QML_SOURCE} PROPERTIES QT_RESOURCE_ALIAS ${ALIAS} )
67
- if (${ALIAS} IN_LIST SINGLETON_QML_SOURCES )
68
- set_source_files_properties (${QML_SOURCE} PROPERTIES QT_QML_SINGLETON_TYPE true )
69
- endif ()
70
- endforeach ()
106
+ message ("Perform web project npm install......" )
107
+ execute_process (
108
+ COMMAND ${CMAKE_COMMAND} -E env PATH =${NODEJS_PATH} ${NPM_EXECUTABLE} install --no-fund --registry=https://registry.npmmirror.com
109
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /Web
110
+ RESULT_VARIABLE NPM_INSTALL_RESULT
111
+ OUTPUT_VARIABLE NPM_INSTALL_OUTPUT
112
+ ERROR_VARIABLE NPM_INSTALL_ERROR
113
+ )
114
+ if (${NPM_INSTALL_RESULT} STREQUAL "0" )
115
+ message (${NPM_INSTALL_OUTPUT} )
116
+ else ()
117
+ message (FATAL_ERROR ${NPM_INSTALL_ERROR} )
118
+ endif ()
71
119
72
- add_custom_command (
73
- TARGET Editor POST_BUILD
74
- COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${EDITOR_RESOURCE_ROOT_ABSOLUTE} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /../Resource
120
+ add_custom_target (
121
+ Editor.Web
122
+ COMMAND ${CMAKE_COMMAND} -E env PATH =${NODEJS_PATH} ${NPM_EXECUTABLE} run build
123
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /Web
124
+ VERBATIM
75
125
)
126
+ add_dependencies (Editor Editor.Web )
76
127
77
- qt_add_qml_module (
78
- Editor
79
- NO_CACHEGEN
80
- URI editor
81
- QML_FILES ${QML_SOURCES}
82
- OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /Generated/QmlModule
128
+ add_custom_command (
129
+ TARGET Editor.Web POST_BUILD
130
+ COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR} /Web/dist $< TARGET_FILE_DIR:Editor> /Web
83
131
)
84
- # ---- end qml -------- -------------------------------------------------------------------------------
132
+ # ---- end web project -------------------------------------------------------------------------------
0 commit comments