Add capability to download STP files directly from HTTP/HTTPS URLs in both CLI and HTTP server modes. Changes: - Add http_downloader module for downloading files from URLs - Extend GlobalConfig to track downloaded files - Update CLI parameter processing to detect and handle URLs - Enhance HTTP server to accept URL parameter alongside file upload - Implement automatic cleanup of downloaded temporary files - Add comprehensive usage documentation (USAGE.md) Usage examples: CLI: STP2GLB.exe --stp https://example.com/model.stp --glb output.glb API: curl -X POST http://localhost:8080/convert -F "url=https://example.com/model.stp" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
140 lines
4.3 KiB
CMake
140 lines
4.3 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(stp2glb LANGUAGES CXX)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
OPTION(CONDA_LOCAL_DEV "Install into activate local development conda env." OFF)
|
|
|
|
if (CONDA_LOCAL_DEV)
|
|
message(STATUS "Building for local development conda env.")
|
|
set(EXE_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin)
|
|
endif ()
|
|
|
|
include(cmake/pre_checks.cmake)
|
|
|
|
# Create a empty list to hold all the linked libs
|
|
set(ADA_CPP_LINK_LIBS)
|
|
# Add dependencies
|
|
|
|
include(cmake/deps_occ.cmake)
|
|
|
|
# Add an option to enable static builds
|
|
OPTION(BUILD_STATIC "Build STP2GLB as a static executable." OFF)
|
|
|
|
if (BUILD_STATIC)
|
|
message(STATUS "Building STP2GLB as a static executable.")
|
|
|
|
# Force static linking
|
|
set(BUILD_SHARED_LIBS OFF) # Disable shared libraries
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".a") # Prefer static libraries
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
|
|
|
|
# For MSVC, ensure the static runtime is used
|
|
if (MSVC)
|
|
foreach (flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
|
set(${flag_var} "${${flag_var}} /MT")
|
|
endforeach ()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT")
|
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
|
|
|
|
# Force dependencies to link statically
|
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) # Prefer CMake config files
|
|
foreach (lib ${ADA_CPP_LINK_LIBS})
|
|
if (TARGET ${lib})
|
|
set_target_properties(${lib} PROPERTIES
|
|
BUILD_WITH_INSTALL_RPATH TRUE
|
|
LINK_SEARCH_START_STATIC TRUE
|
|
LINK_SEARCH_END_STATIC TRUE
|
|
)
|
|
endif ()
|
|
endforeach ()
|
|
endif ()
|
|
|
|
else ()
|
|
include(cmake/deps_ifc.cmake)
|
|
include(cmake/deps_stepcode.cmake)
|
|
include(cmake/deps_cgal.cmake)
|
|
endif ()
|
|
|
|
if (MSVC)
|
|
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
|
add_definitions(-DNOMINMAX)
|
|
endif ()
|
|
|
|
|
|
# Install the C++ executable
|
|
set(SOURCES
|
|
src/main.cpp
|
|
src/config_utils.cpp
|
|
src/http_server.cpp
|
|
src/http_downloader.cpp
|
|
src/geom/Color.cpp
|
|
src/cadit/occt/step_tree.cpp
|
|
src/cadit/occt/debug.cpp
|
|
src/cadit/occt/gltf_writer.cpp
|
|
src/cadit/occt/convert.cpp
|
|
src/cadit/occt/step_helpers.cpp
|
|
src/cadit/occt/bsplinesurf.cpp
|
|
src/cadit/occt/helpers.cpp
|
|
src/cadit/occt/step_writer.cpp
|
|
src/cadit/occt/custom_progress.cpp
|
|
)
|
|
set(HEADERS
|
|
src/config_utils.h
|
|
src/config_structs.h
|
|
src/http_server.h
|
|
src/http_downloader.h
|
|
src/geom/Color.h
|
|
src/cadit/occt/step_tree.h
|
|
src/cadit/occt/convert.h
|
|
src/cadit/occt/debug.h
|
|
src/cadit/occt/step_helpers.h
|
|
src/cadit/occt/gltf_writer.h
|
|
src/cadit/occt/bsplinesurf.h
|
|
src/cadit/occt/helpers.h
|
|
src/cadit/occt/step_writer.h
|
|
src/cadit/occt/geometry_iterator.h
|
|
src/cadit/occt/custom_progress.h
|
|
)
|
|
|
|
add_executable(STP2GLB ${SOURCES} ${HEADERS})
|
|
|
|
if (NOT BUILD_STATIC)
|
|
set_target_properties(STP2GLB PROPERTIES
|
|
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/bin")
|
|
endif ()
|
|
|
|
message(STATUS "CLI11_DIR: ${CLI11_DIR}")
|
|
if (BUILD_STATIC)
|
|
target_include_directories(STP2GLB PRIVATE ${CLI11_DIR})
|
|
|
|
if (UNIX)
|
|
message(STATUS "Setting static compilation rules for unix")
|
|
target_link_libraries(STP2GLB PRIVATE ${ADA_CPP_LINK_LIBS} pthread -static)
|
|
else ()
|
|
target_link_libraries(STP2GLB ${ADA_CPP_LINK_LIBS} -static)
|
|
set_property(TARGET STP2GLB PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
endif ()
|
|
|
|
else ()
|
|
target_link_libraries(STP2GLB ${ADA_CPP_LINK_LIBS})
|
|
endif ()
|
|
|
|
# install to executable into the bin dir
|
|
message(STATUS "Installing executable to ${EXE_BIN_DIR}")
|
|
install(TARGETS STP2GLB DESTINATION ${EXE_BIN_DIR})
|
|
|
|
# Include the tests directory
|
|
OPTION(BUILD_TESTING "Build the testing tree." ON)
|
|
if (BUILD_TESTING)
|
|
message(STATUS "Building the testing tree.")
|
|
enable_testing()
|
|
include(tests/tests.cmake)
|
|
endif (BUILD_TESTING)
|
|
|