fa0170daa9
C++ WebView2 host app driving a Python/rembg engine as a JSON-stdio sidecar, with live before/after preview for images and video frames. Also includes the original CLI (removebg.py) built on the same core/ engine. The WebView2 SDK is fetched on demand via native/third_party/fetch-webview2.ps1 (wired into the Makefile) rather than vendored, since it's ~15MB of prebuilt/generated Microsoft SDK content. A Makefile provides make sync/build/run/clean as the standard entry points.
68 lines
1.8 KiB
CMake
68 lines
1.8 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(RemoveBGStudio LANGUAGES CXX)
|
|
|
|
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
message(FATAL_ERROR "RemoveBG Studio only ships a vendored x64 WebView2 loader. Configure for x64.")
|
|
endif()
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
option(RBG_CONSOLE "Build with a console window for debug logging" OFF)
|
|
|
|
set(THIRD_PARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party")
|
|
|
|
add_executable(RemoveBGStudio
|
|
src/main.cpp
|
|
src/WebViewHost.cpp
|
|
src/SidecarProcess.cpp
|
|
src/Dialogs.cpp
|
|
src/PathUtil.cpp
|
|
)
|
|
|
|
if(RBG_CONSOLE)
|
|
# Console subsystem still shows the window; stdout/stderr are visible for debugging.
|
|
set_target_properties(RemoveBGStudio PROPERTIES WIN32_EXECUTABLE FALSE)
|
|
target_compile_definitions(RemoveBGStudio PRIVATE RBG_CONSOLE=1)
|
|
else()
|
|
set_target_properties(RemoveBGStudio PROPERTIES WIN32_EXECUTABLE TRUE)
|
|
endif()
|
|
|
|
target_include_directories(RemoveBGStudio PRIVATE
|
|
"${THIRD_PARTY_DIR}/webview2/include"
|
|
"${THIRD_PARTY_DIR}/json"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src"
|
|
)
|
|
|
|
target_compile_definitions(RemoveBGStudio PRIVATE
|
|
UNICODE
|
|
_UNICODE
|
|
WIN32_LEAN_AND_MEAN
|
|
NOMINMAX
|
|
)
|
|
|
|
target_link_libraries(RemoveBGStudio PRIVATE
|
|
"${THIRD_PARTY_DIR}/webview2/lib/x64/WebView2LoaderStatic.lib"
|
|
ole32
|
|
oleaut32
|
|
shlwapi
|
|
shell32
|
|
user32
|
|
gdi32
|
|
comctl32
|
|
comdlg32
|
|
advapi32
|
|
version
|
|
)
|
|
|
|
target_compile_options(RemoveBGStudio PRIVATE /W4 /permissive-)
|
|
|
|
# WebView2LoaderStatic.lib is linked statically, so no WebView2Loader.dll is
|
|
# needed at runtime. Just stage the web UI next to the exe.
|
|
add_custom_command(TARGET RemoveBGStudio POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/web"
|
|
"$<TARGET_FILE_DIR:RemoveBGStudio>/web"
|
|
COMMENT "Staging web/ assets next to RemoveBGStudio.exe"
|
|
)
|