前端工程化
This commit is contained in:
+70
-11
@@ -4,6 +4,76 @@ if (RENDERIVE_BUILD_TESTS)
|
||||
endif ()
|
||||
rcl_add_dependency_action_targets(Renderive_Web_env ${Renderive_Web_dependencies})
|
||||
set_target_properties(Renderive_Web_env PROPERTIES FOLDER Renderive_Web)
|
||||
if (CMAKE_CONFIGURATION_TYPES)
|
||||
set(Renderive_Web_assets_dir "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/webapp_gallery")
|
||||
else ()
|
||||
set(Renderive_Web_assets_dir "${CMAKE_CURRENT_BINARY_DIR}/webapp_gallery")
|
||||
endif ()
|
||||
set(Renderive_Web_node_search_paths)
|
||||
if (WIN32 AND DEFINED ENV{APPDATA})
|
||||
file(GLOB Renderive_Web_clion_node_versions LIST_DIRECTORIES true
|
||||
"$ENV{APPDATA}/JetBrains/CLion*/node/versions/*")
|
||||
list(SORT Renderive_Web_clion_node_versions COMPARE NATURAL ORDER DESCENDING)
|
||||
foreach (Renderive_Web_clion_node_version IN LISTS Renderive_Web_clion_node_versions)
|
||||
if (EXISTS "${Renderive_Web_clion_node_version}/node.exe"
|
||||
AND EXISTS "${Renderive_Web_clion_node_version}/npm.cmd")
|
||||
list(APPEND Renderive_Web_node_search_paths "${Renderive_Web_clion_node_version}")
|
||||
endif ()
|
||||
endforeach ()
|
||||
endif ()
|
||||
find_program(Renderive_Web_node_executable NAMES node node.exe
|
||||
HINTS ${Renderive_Web_node_search_paths} REQUIRED)
|
||||
if (WIN32)
|
||||
find_program(Renderive_Web_npm_executable NAMES npm.cmd
|
||||
HINTS ${Renderive_Web_node_search_paths} REQUIRED)
|
||||
else ()
|
||||
find_program(Renderive_Web_npm_executable NAMES npm REQUIRED)
|
||||
endif ()
|
||||
set(Renderive_Web_frontend_dir "${CMAKE_CURRENT_LIST_DIR}/../webapp_gallery")
|
||||
set(Renderive_Web_frontend_install_stamp "${CMAKE_CURRENT_BINARY_DIR}/webapp_gallery_npm_ci.stamp")
|
||||
set(Renderive_Web_frontend_build_stamp "${CMAKE_CURRENT_BINARY_DIR}/webapp_gallery_vite_build.stamp")
|
||||
file(GLOB_RECURSE Renderive_Web_frontend_sources CONFIGURE_DEPENDS
|
||||
"${Renderive_Web_frontend_dir}/src/*"
|
||||
)
|
||||
set(Renderive_Web_frontend_configuration
|
||||
"${Renderive_Web_frontend_dir}/package.json"
|
||||
"${Renderive_Web_frontend_dir}/package-lock.json"
|
||||
"${Renderive_Web_frontend_dir}/vite.config.ts"
|
||||
"${Renderive_Web_frontend_dir}/tsconfig.json"
|
||||
"${Renderive_Web_frontend_dir}/tsconfig.app.json"
|
||||
"${Renderive_Web_frontend_dir}/index.html"
|
||||
)
|
||||
add_custom_command(
|
||||
OUTPUT "${Renderive_Web_frontend_install_stamp}"
|
||||
COMMAND "${Renderive_Web_npm_executable}" ci
|
||||
COMMAND "${CMAKE_COMMAND}" -E touch "${Renderive_Web_frontend_install_stamp}"
|
||||
DEPENDS
|
||||
"${Renderive_Web_frontend_dir}/package.json"
|
||||
"${Renderive_Web_frontend_dir}/package-lock.json"
|
||||
WORKING_DIRECTORY "${Renderive_Web_frontend_dir}"
|
||||
COMMENT "Installing Renderive Gallery frontend dependencies"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_command(
|
||||
OUTPUT "${Renderive_Web_frontend_build_stamp}"
|
||||
COMMAND "${Renderive_Web_npm_executable}" run build
|
||||
COMMAND "${CMAKE_COMMAND}" -E touch "${Renderive_Web_frontend_build_stamp}"
|
||||
DEPENDS "${Renderive_Web_frontend_install_stamp}"
|
||||
${Renderive_Web_frontend_configuration}
|
||||
${Renderive_Web_frontend_sources}
|
||||
WORKING_DIRECTORY "${Renderive_Web_frontend_dir}"
|
||||
COMMENT "Building Renderive Gallery frontend"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(Renderive_Web_Assets
|
||||
COMMAND "${CMAKE_COMMAND}" -E remove_directory "${Renderive_Web_assets_dir}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
||||
"${Renderive_Web_frontend_dir}/dist"
|
||||
"${Renderive_Web_assets_dir}"
|
||||
DEPENDS "${Renderive_Web_frontend_build_stamp}"
|
||||
COMMENT "Synchronizing Renderive Gallery frontend assets"
|
||||
VERBATIM
|
||||
)
|
||||
library_is_installed_with_rely(Renderive_Web_dependencies_installed ${Renderive_Web_dependencies})
|
||||
if (NOT Renderive_Web_dependencies_installed)
|
||||
rcl_log_append("[FATAL_ERROR] Renderive_Web dependencies are not installed. Build Renderive_Web_env first")
|
||||
@@ -54,17 +124,6 @@ append_glob_source(Renderive_Web_Server_sources "${Renderive_Web_Server_source_d
|
||||
add_executable(Renderive_Web_Server ${Renderive_Web_Server_sources})
|
||||
target_compile_features(Renderive_Web_Server PRIVATE cxx_std_20)
|
||||
target_link_libraries(Renderive_Web_Server PRIVATE Renderive_Web)
|
||||
if (CMAKE_CONFIGURATION_TYPES)
|
||||
set(Renderive_Web_assets_dir "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/webapp_gallery")
|
||||
else ()
|
||||
set(Renderive_Web_assets_dir "${CMAKE_CURRENT_BINARY_DIR}/webapp_gallery")
|
||||
endif ()
|
||||
add_custom_target(Renderive_Web_Assets
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../webapp_gallery"
|
||||
"${Renderive_Web_assets_dir}"
|
||||
COMMENT "Synchronizing Renderive Web assets"
|
||||
)
|
||||
add_dependencies(Renderive_Web_Server Renderive_Web_Assets)
|
||||
if (MSVC)
|
||||
target_compile_options(Renderive_Web PRIVATE /utf-8)
|
||||
|
||||
Reference in New Issue
Block a user