cmake_minimum_required(VERSION 3.20) project(WebTopBuilder LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(QT_COMPONENTS Widgets Concurrent) find_package(Qt6 COMPONENTS ${QT_COMPONENTS} REQUIRED) set(CORE_DIR "${CMAKE_SOURCE_DIR}/../core") set(CORE_LIB "${CORE_DIR}/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}webtop_core${CMAKE_STATIC_LIBRARY_SUFFIX}") add_custom_command( OUTPUT "${CORE_LIB}" COMMAND cargo build --release WORKING_DIRECTORY "${CORE_DIR}" COMMENT "Building Rust core (webtop_core)" VERBATIM ) add_custom_target(webtop_core_lib DEPENDS "${CORE_LIB}") add_executable(webtop_builder WIN32 src/main.cpp src/main_window.cpp ) target_include_directories(webtop_builder PRIVATE src) target_link_libraries(webtop_builder PRIVATE Qt6::Widgets Qt6::Concurrent ws2_32 userenv ntdll bcrypt "${CORE_LIB}" ) add_dependencies(webtop_builder webtop_core_lib) set_target_properties(webtop_builder PROPERTIES OUTPUT_NAME "webtop_builder" LINK_FLAGS "/SUBSYSTEM:WINDOWS" ) install(TARGETS webtop_builder DESTINATION bin) set(POST_BUILD_DIST "${CMAKE_SOURCE_DIR}/../dist" CACHE PATH "dist dir") add_custom_command(TARGET webtop_builder POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${POST_BUILD_DIST}" "$/dist" COMMAND ${CMAKE_COMMAND} -E copy "$/../core/target/release/webtop_cli.exe" "$/webtop_cli.exe" COMMENT "Bundling dist + CLI next to builder" )