Releases: ChaseSunstrom/cforge
beta-v2.3.2
CForge Release beta-v2.3.2
Clean Command & Dependency Management Fixes
CForge beta-v2.3.2 is a patch release fixing issues with the clean command on Windows, dependency removal, and CPack license file handling.
Bug Fixes
CPack License File Optional
Problem: CPack always expected a LICENSE file at ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE, causing build errors when no license file existed.
Fix: Made the license file optional by checking if LICENSE, LICENSE.txt, or LICENSE.md exists before setting CPACK_RESOURCE_FILE_LICENSE. If none exist, the variable is simply not set.
Clean Command Fails with FetchContent
Problem: When fetch_content = true, the build/_deps directory contains cloned Git repositories with .git folders. On Windows, these have read-only pack files that cause std::filesystem::remove_all to fail with "Access is denied".
Fix: Added a robust force_remove_directory() function that:
- First tries standard
remove_all - If that fails, makes all files writable and retries
- On Windows, falls back to
rmdir /s /q - As a last resort, uses the robocopy mirror trick to force deletion
Clean Command Doesn't Remove cforge.hash
Problem: The cforge.hash file wasn't being cleaned up.
Fix: Added cforge.hash to the list of files cleaned by clean_cmake_files().
Remove Command Doesn't Handle Index Dependencies
Problem: cforge remove <package> only checked [dependencies.git] and [dependencies.vcpkg] sections, but index dependencies (like fmt = "11.1.4") are stored in the main [dependencies] section.
Fix: Added a call to also remove from the main [dependencies] section.
Files Changed
| File | Changes |
|---|---|
src/core/workspace.cpp |
Optional license file handling for CPack |
src/core/command_clean.cpp |
Robust directory removal, cforge.hash cleanup |
src/core/command_remove.cpp |
Index dependency removal support |
All existing workflows remain compatible.
Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)
beta-v2.3.1
CForge Release beta-v2.3.1
Registry & Lock File Fixes
CForge beta-v2.3.1 is a patch release addressing bugs in the new package registry integration, lock file generation, and dependency management commands.
Bug Fixes
Registry Lookup Path
- Fixed registry looking in project directory instead of the cache at
%LOCALAPPDATA%\cforge\registry - Changed
registry reg(project_dir)toregistry reg(4 occurrences inworkspace.cpp)
Double "error" Prefix
- Fixed duplicate "error" word in build output
- Changed to
fmt::print()instead oflogger::print_error()which was adding a redundant prefix
cforge update --packages
- Fixed
--packagesflag to actually update the package registry index - Now correctly calls
registry::update(true)to pull the cforge-index repository
cforge add Section Handling
- Fixed section matching to exactly match
[dependencies]without catching subsections like[dependencies.git] - Added whitespace trimming for section header comparison
- Fixed blank line insertion before new sections
Lock Command Directory Default
- Changed default directory from
vendortodepsto match all other commands
Improvements
Lock File FetchContent Support
Lock files now work correctly in both dependency modes:
| Mode | Behavior |
|---|---|
fetch_content = true |
Generates lock file from cforge.toml + registry metadata |
fetch_content = false |
Scans deps directory for installed packages |
Automatic Lock File Generation
- Lock files are now automatically generated during build
- Uses
generate_lockfile_from_config()for FetchContent mode - Uses
update_lockfile()for clone mode
Registry Index Fixes
Fixed TOML syntax errors in cforge-index package definitions:
asio.toml— Fixed inline table syntax forrequiresimgui.toml— Fixed inline table syntax forrequiresandgroupsspdlog.toml— Fixed inline table syntax forrequiresandgroups
Files Changed
| File | Changes |
|---|---|
src/core/workspace.cpp |
Registry lookup path fix |
src/core/command_build.cpp |
Error output fix, automatic lock file generation |
src/core/command_update.cpp |
--packages flag fix |
src/core/command_add.cpp |
Section matching improvements |
src/core/command_lock.cpp |
Directory default, FetchContent support |
include/core/lockfile.hpp |
New generate_lockfile_from_config() function |
All existing workflows remain compatible.
Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)
beta-v2.3.0
CForge Release beta-v2.3.0
Package Registry Integration
CForge beta-v2.3.0 introduces integration with the cforge-index package registry, bringing a seamless dependency management experience to C/C++ development.
The cforge-index is a consolidated list of popular C/C++ libraries that can be easily pulled from cforge without having to specify a git repository URL. The new index is fully backwards compatible with CMake, which means all generated CMake code from cforge will compile without the use of cforge.
New Features
Package Registry Integration
CForge now connects to the cforge-index package registry, enabling simple dependency management similar to npm, Cargo, or pip.
cforge search json # Find JSON libraries
cforge info fmt --versions # Show package details and available versions
cforge add [email protected] # Add a dependency
cforge remove spdlog # Remove a dependency
cforge update --packages # Refresh the registry cacheFeatures:
- Local registry cache at
~/.cforge/registry - Package metadata including description, license, keywords, and categories
- Automatic Git tag discovery for version resolution
- Semantic versioning with wildcard support (
1.2.*,1.*,*)
New Commands
| Command | Description |
|---|---|
cforge search <query> |
Search for packages in the registry |
cforge info <package> |
Show detailed package information |
cforge add <package>[@version] |
Add a dependency to cforge.toml |
cforge remove <package> |
Remove a dependency from cforge.toml |
cforge update --packages |
Update the package registry index |
cforge lock |
Manage dependency lock file |
Examples:
cforge add [email protected] # Add specific version
cforge add spdlog --features async # Add with features
cforge add mylib --git https://github.com/user/mylib --tag v1.0 # Direct GitSimplified Dependency Syntax
Declare dependencies in cforge.toml with a clean, intuitive syntax:
[dependencies]
fmt = "11.1.4" # Exact version
spdlog = "1.15.*" # Latest 1.15.x
nlohmann_json = "*" # Latest version
[dependencies.spdlog]
version = "1.15.0"
features = ["async"]FetchContent Integration
Dependencies are now fetched via CMake FetchContent by default—no pre-cloning required.
| Mode | Behavior |
|---|---|
fetch_content = true (default) |
CMake downloads dependencies during configure |
fetch_content = false |
Pre-clones to vendor/ directory, uses add_subdirectory() |
[dependencies]
fetch_content = true # Use CMake FetchContent (default)
directory = "vendor" # Clone directory when fetch_content = falseDependency Sources
CForge now supports five dependency sources:
| Source | Description |
|---|---|
INDEX |
cforge-index registry (default) |
GIT |
Direct Git repository |
VCPKG |
vcpkg package |
SYSTEM |
System library (pkg-config) |
PROJECT |
Local project path |
Files Changed
New Files:
include/core/registry.hpp— Registry class and typessrc/core/registry.cpp— Registry implementationinclude/core/lockfile.hpp— Lock file managementsrc/core/command_search.cpp—searchcommandsrc/core/command_info.cpp—infocommandsrc/core/command_add.cpp—addcommandsrc/core/command_remove.cpp—removecommand
Updated Files:
src/core/command_update.cpp— Added--packagesflagsrc/core/command_build.cpp— Index dependency resolution, FetchContent, hash fixsrc/core/workspace.cpp— CMake generation for index dependenciessrc/core/command_help.cpp— Help text for new commandsREADME.md— New documentationcforge-web/docs/dependencies.md— Comprehensive dependency docs
Note: All existing workflows remain compatible.
Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)
beta-v2.2.2
CForge Release beta-v2.2.2
Cross-Compilation Profiles & Documentation Overhaul
CForge beta-v2.2.2 introduces reusable cross-compilation profiles for targeting multiple platforms, fixes a critical build cache bug, and brings the documentation up to date.
Bug Fixes
CMakeLists.txt Regeneration Fix
- Fixed issue where
CMakeLists.txtwas not being regenerated whencforge.tomlwas modified, even though the hash was changing - Root cause:
clone_git_dependencies()was saving thecforge.tomlhash beforegenerate_cmakelists_from_toml()could detect changes - Location:
src/core/command_build.cpp:352-353
New Features
Cross-Compilation Profiles
Define reusable cross-compilation configurations and switch between them with a single flag.
cforge build --profile android-arm64
cforge build -P raspberry-piFeatures:
- Reusable profiles via
[cross.profile.<name>]configuration - Environment variable expansion in toolchain paths (e.g.,
${ANDROID_NDK}) - Custom CMake variables per profile
Updated Cross-Compilation Configuration
New unified [cross] section format:
[cross]
enabled = true
[cross.target]
system = "Linux"
processor = "aarch64"
toolchain = "path/to/toolchain.cmake"
[cross.compilers]
c = "/usr/bin/aarch64-linux-gnu-gcc"
cxx = "/usr/bin/aarch64-linux-gnu-g++"
[cross.paths]
sysroot = "/path/to/sysroot"
find_root = "/path/to/find/root"
[cross.variables]
MY_VAR = "value"Documentation
GitHub Pages Workflow Fix
- Fixed
deploy-docs.ymlto usecforge-webdirectory instead ofdocs - Documentation now rebuilds when
README.mdorcforge-web/**changes
Updated Documentation Pages
| Page | Changes |
|---|---|
cross-compilation.md |
Complete rewrite with profiles, examples, and troubleshooting |
project-configuration.md |
Updated to match current config format (cpp_standard, binary_type, build.config.<name>) |
dependencies.md |
Added system dependencies (find_package, pkg_config, manual), subdirectory dependencies |
workspaces.md |
Updated workspace commands and project dependency format |
Files Changed
src/core/command_build.cpp— Cross-compilation profiles,--profileflag, hash fixsrc/core/command_init.cpp— Updated template with cross-compilation profilessrc/core/command_help.cpp— Added--profileflag to help text.github/workflows/deploy-docs.yml— Fixed to usecforge-webcforge-web/docs/*.md— Multiple documentation updates
Note: All existing workflows remain compatible.
Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)
beta-v2.2.1
CForge Release beta-v2.2.1
Bug Fixes & Stability
CForge beta-v2.2.1 is a patch release focused on fixing critical bugs in the build pipeline, Windows compatibility, and the self-update mechanism.
Bug Fixes
Compiler Warning in Package Command
- Replaced
strncpywithsnprintfincommand_package.cppto eliminate deprecation warning
CI Pipeline Timeout on Windows
- Increased CMake build timeout from 60 seconds to 600 seconds (10 minutes) in
command_build.cpp - Prevents Windows CI builds from timing out on larger projects
"Permission denied" Error in Windows CI
- Added
--no-buildflag to packaging step inrelease.yaml - Prevents cforge from trying to rebuild itself while running
Install Script Version Parsing
- Updated
install.ps1to handle CMake versions with suffixes like-rc1,-alpha - Uses regex extraction with try/catch fallback for robust parsing
CMake Warnings Treated as Errors
- Modified
install.ps1to temporarily set$ErrorActionPreference = "Continue"during CMake operations - Stderr warnings no longer cause script failure
Windows min/max Macro Conflict
- Added
#define NOMINMAXincommand_watch.cpp - Prevents Windows macros from conflicting with
std::filesystem::file_time_type::min()
cforge update Command
- Rewrote self-update logic to actually clone, build, and install the new binary
- Previously only cloned the repository without completing the update
Windows File Locking During Update
- Added proper error handling for backup file removal
- Handles read-only git files when cleaning up temp directories
Improvements
Consistent Install Paths
- Both
install.ps1andcforge updatenow install to the same directory structure:<prefix>/installed/cforge/bin/cforge.exe
Public PATH Update API
- Exposed
update_path_envfunctionality ininstaller.hpp - Now available for use by the update command and external tooling
Note: All existing workflows remain compatible.
Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)
beta-v2.2.0
CForge Release beta-v2.2.0
Developer Experience & Build Reliability
CForge beta-v2.2.0 brings powerful new commands for day-to-day development workflows, along with significant improvements to build reliability and error reporting.
New Commands
cforge watch — File Watching & Auto-Rebuild
Automatically rebuild your project when source files change.
cforge watch # Watch and rebuild on changes
cforge watch --run # Watch, rebuild, and run executable
cforge watch -c Release # Watch with Release configuration
cforge watch --interval 1000 # Custom poll interval (ms)Features:
- Watches
.cpp,.cc,.cxx,.c,.hpp,.hxx,.h,.tomlfiles - Automatically ignores
build/,.git/,deps/,vendor/directories - Optional
--runflag to execute after successful builds
cforge bench — Benchmark Runner
Run performance benchmarks with Google Benchmark support.
cforge bench # Run all benchmarks
cforge bench --filter 'BM_Sort' # Run matching benchmarks
cforge bench --json > results.json # JSON output
cforge bench --csv # CSV outputConfiguration (cforge.toml):
[benchmark]
directory = "bench"
target = "my_benchmarks"cforge tree — Dependency Visualization
Visualize your project's dependency tree with color-coded output.
cforge tree # Show dependency tree
cforge tree -d 2 # Limit depth
cforge tree --all # Include transitive dependenciesColor Coding:
| Color | Type |
|---|---|
| 🔵 Cyan | Git dependencies |
| 🟣 Magenta | vcpkg dependencies |
| 🟡 Yellow | System dependencies |
| 🟢 Green | Project dependencies (workspace) |
cforge new — Template Generator
Quickly scaffold new files from templates.
cforge new class MyClass # Create MyClass.hpp + MyClass.cpp
cforge new class MyClass -n myproj # With namespace
cforge new header utils # Header-only file
cforge new interface IService # Abstract interface
cforge new struct Config # Struct definition
cforge new test MyClass # Test fileAvailable Templates: class, header, struct, interface, test, main
cforge doc — Documentation Generation
Generate API documentation with Doxygen.
cforge doc # Generate documentation
cforge doc --init # Create Doxyfile for customization
cforge doc --open # Generate and open in browser
cforge doc -o api-docs # Custom output directorycforge lock — Reproducible Builds
Manage dependency lock files for reproducible builds.
cforge lock # Generate/update lock file
cforge lock --verify # Check deps match lock file
cforge lock --force # Regenerate lock file
cforge lock --clean # Remove lock fileBest Practices:
- Commit
cforge.lockto version control - Run
cforge lock --verifyin CI pipelines - Run
cforge lockafter adding/updating dependencies
cforge fmt — Code Formatting
Format source code with clang-format.
cforge fmt # Format all files in place
cforge fmt --check # Check without modifying
cforge fmt --diff # Show what would change
cforge fmt --style=google # Use Google stylecforge lint — Static Analysis
Run static analysis with clang-tidy.
cforge lint # Run all checks
cforge lint --fix # Apply automatic fixes
cforge lint --checks='modernize-*' # Specific checkscforge completions — Shell Completions
Generate tab-completion scripts for your shell.
cforge completions bash >> ~/.bashrc
cforge completions zsh >> ~/.zshrc
cforge completions powershell >> $PROFILE
cforge completions fish > ~/.config/fish/completions/cforge.fishBuild System Improvements
Extended Build Timeouts
- Increased CMake build timeout from 60s to 600s (10 minutes)
- Prevents false failures on slower CI runners and large Release builds
Self-Build Protection
- Fixed Windows packaging issue where
cforge.execouldn't rebuild itself while running - Added
--no-buildflag for packaging when build is already complete
New Dependency Hash Format
- Migrated from
.cforge_dependency_hashestocforge.hash - Human-readable TOML format for dependency state tracking
Error Reporting Enhancements
Deduplicated Error Messages
- Fixed duplicate error reporting (e.g.,
GCC-UNDECLandCOMPILER-UNDECLAREDfor same error) - Intelligent deduplication preserves the most detailed diagnostic
Cleaner Output
- Removed redundant
→ Error details:prefix - Streamlined formatting for better readability
Code Quality & Compatibility
- GCC 15 Compatibility: Fixed all compiler warnings
- Security: Replaced unsafe
strncpywithsnprintf
CI/CD Pipeline
Multi-Platform Support
- Windows x64 (MSVC)
- Linux x64 (GCC)
- macOS x64 & ARM64 (Clang)
Package Formats
| Platform | Formats |
|---|---|
| Windows | ZIP |
| Linux | TGZ, DEB |
| macOS | TGZ |
Installation
Upgrade to beta-v2.2.0:
git clone https://github.com/ChaseSunstrom/cforge.git
cd cforge
# Windows
.\scripts\bootstrap.ps1
# Linux/macOS
./scripts/bootstrap.shFull Command Reference
| Command | Description |
|---|---|
init |
Initialize a new project or workspace |
build |
Build the project |
clean |
Clean build artifacts |
run |
Build and run the project |
test |
Run tests |
package |
Create distributable packages |
deps |
Manage Git dependencies |
vcpkg |
Manage vcpkg dependencies |
install |
Install project to system |
add |
Add a dependency |
remove |
Remove a dependency |
update |
Update cforge |
ide |
Generate IDE project files |
list |
List dependencies or projects |
lock |
Manage dependency lock file |
fmt |
Format code with clang-format |
lint |
Static analysis with clang-tidy |
watch |
Watch and auto-rebuild |
completions |
Generate shell completions |
doc |
Generate documentation |
tree |
Visualize dependency tree |
new |
Create files from templates |
bench |
Run benchmarks |
Note: All existing workflows remain compatible.
Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)
beta-v2.1.0
CForge Release beta-v2.1.0
Visual Studio Project & Workspace Generation
CForge beta-v2.1.0 introduces first-class support for generating Visual Studio solutions and projects, bringing CForge on par with tools like Premake when it comes to dependency-aware workspace management.
Key Improvements
Visual Studio Generation Enhancements
-
Solution & Project Files
- Full generation of
.sln,.vcxproj, and.filtersfiles - Automatic grouping of source/header files into filters for cleaner IDE view
- Full generation of
-
Dependency-Aware Build Ordering
- Projects linked by target dependencies are correctly ordered in the solution
- Transitive dependencies automatically discovered and added
-
Configuration & Platform Support
- Multi-config (
Debug/Release) and multi-platform (x86/x64/ARM) support - Inherited settings for common configurations across all projects
- Multi-config (
Workspace Management
-
Workspace Definition File
- Configure per-project settings (output paths, include dirs, preprocessor macros)
-
Selective Generation
- Custom solution folders for logical grouping
Progress & Error Reporting
-
IDE-Style Build Feedback
- Color-coded status messages to match MSBuild conventions
-
Error Parsing Improvements
- Enhanced regex-based parsing of MSVC errors/warnings
- Jump-to-file annotations for quick navigation in IDE
Usage Examples
Generate a Visual Studio 2022 Solution
cforge ide vsInstallation
Upgrade to beta-v2.1.0:
git clone https://github.com/ChaseSunstrom/cforge.git
cd cforge
.\scripts\bootstrap.ps1Note: Existing CMakeLists.txt–based workflows remain unchanged; Visual Studio generation is entirely additive. Let us know how it fits into your Windows development workflow!
beta-v2.0.0
CForge Release beta-v2.0.0
Summary
CForge v2.0.0-beta marks the next evolution of our build system—now implemented in modern C and C++ after an interim Rust rewrite. This change brings tighter integration with existing C/C++ codebases, lower memory overhead, and more direct control over platform-specific optimizations. You’ll still get the revamped cforge.toml syntax, first-class workspace support, smarter dependency resolution, and built-in testing/packaging hooks. We’ve stabilized core features and look forward to your feedback on the new native plugin API.
Highlights
-
Native C & C++ Core
After experimenting with Rust, we’ve re-implemented CForge’s engine in C and C++ for seamless integration with your tooling and faster startup times. -
Consistent Config with
cforge.toml
Same clean, TOML-based layout for dependencies, build options, tests, and packaging metadata (although updated settings). -
Plugin System (Native API)
Fully C/C++-based plugin interface—write plugins that link directly against CForge without any FFI layers. -
Workspace Management
Multi-crate/workspace support remains, with per-package overrides and unified commands:cforge build cforge test cforge package -
Integrated Testing & Packaging
Declare your tests and packaging rules right incforge.toml—no external scripts needed.
New Features
1. Smarter Dependency Resolution
- Unified handling of vcpkg, Git, and system libraries in a single pass
- On-disk caching for offline or containerized builds
2. Parallel & Incremental Builds
- Change detection to rebuild only what’s necessary
- Parallel job scheduling guided by CPU count (
--jobs)
3. Enhanced CLI
- Verbosity control with
-v, (verbose) and-q(quiet) cforge cleanfor environment and config diagnostics
4. Built-in Test Runner
- Execute unit and integration tests via
cforge test - Filter tests by name or tags for targeted runs
Migration Guide
-
Install v2.0.0-beta
.\scripts\bootstrap.ps1
-
Update
cforge.toml- Rename
[deps]→[dependencies] - Relocate build flags under
[build]
- Rename
-
Re-initialize Workspace (if needed)
cforge workspace init
-
Clean & Build
cforge clean cforge build
Performance Improvements
- Cold builds up to 50% faster thanks to minimal startup overhead in C/C++
- Warm rebuilds often complete in <1 s on mid-sized projects
Known Issues
- Plugin API still evolving—possible breaking changes before stable 1.0.0
- Windows MSI installer coming soon; use bootstrap scripts for now
- Occasional lockfile contention on network drives
Updated cforge.toml and cforge.workspace.toml syntax
cforge.toml
[project]
name = "cforge"
version = "2.0.0"
description = "A C/C++ build tool with dependency management"
cpp_standard = "17"
binary_type = "executable"
authors = ["Chase Sunstrom <[email protected]>"]
homepage = "https://github.com/ChaseSunstrom/cforge"
repository = "https://github.com/ChaseSunstrom/cforge.git"
license = "MIT"
[build]
build_type = "Debug"
directory = "build"
source_dirs = ["src"]
include_dirs = ["include"]
[build.config.debug]
defines = ["DEBUG=1", "FMT_HEADER_ONLY=ON"]
flags = ["DEBUG_INFO", "NO_OPT"]
[build.config.release]
defines = ["NDEBUG=1", "FMT_HEADER_ONLY=ON"]
flags = ["OPTIMIZE"]
[test]
enabled = true
[package]
enabled = true
generators = ["ZIP", "TGZ", "DEB"]
vendor = "Chase Sunstrom"
contact = "Chase Sunstrom <[email protected]>"
[dependencies]
directory = "vendor"
[dependencies.git]
tomlplusplus = { url = "https://github.com/marzer/tomlplusplus.git", tag = "v3.4.0" }
fmt = { url = "https://github.com/fmtlib/fmt.git", tag = "11.1.4" }cforge.workspace.toml
[workspace]
name = "workspace"
description = "A C++ workspace created with cforge"
# Projects in legacy format: name:path:is_startup_project
# projects = [
# "proj1:proj1:true",
# "proj2:proj2:false",
# "proj3:proj3:false"
# ]
[[workspace.project]]
name = "proj1"
# optional path
# path = "projects/proj1"
startup = true
[[workspace.project]]
name = "proj2"
startup = true
[[workspace.project]]
name = "proj3"
startup = false
# Main project is the first project
main_project = "proj1"Acknowledgments
Thanks to our early testers, GitHub contributors, and everyone filing issues and PRs. Your feedback has been invaluable in shaping CForge’s C/C++ core into a faster, more flexible tool.
Download v2.0.0-beta today and join us on GitHub Discussions—or file an issue if you hit any bugs or have feature ideas. Happy building!
beta-v1.5.0
CForge Release beta-v1.5.0
Build System and UI Improvements
CForge beta-v1.5.0 addresses key usability issues, focusing on improved configuration handling, more reliable progress feedback, and better error reporting.
Key Improvements
CMake Configuration Enhancements
- Fixed C++ Standard Setting: Properly generates CMake configuration for C/C++ language standards
- Improved Build Variant Support: Better handling of variant-specific settings in CMake generation
- Enhanced Multi-Config Support: More reliable handling of Debug/Release configurations
Progress Reporting System
- Redesigned Spinner Interface: More reliable progress indicators during builds
- Enhanced Status Updates: Clearer indication of current build operations
- Improved Error Visualization: Better formatting of compiler errors
Workspace Functionality
- Dependency Order Building: More reliable workspace builds respecting project dependencies
- Better Workspace Navigation: Enhanced tools for managing multi-project workspaces
- Improved Package Configuration: More robust package configuration for workspace projects
Technical Refinements
- Thread Safety Improvements: Fixed race conditions in progress display code
- Error Handling Enhancements: More detailed and better formatted error messages
- CMake Generation Improvements: More robust handling of paths and configurations
- Better Cross-Compilation Support: Enhanced platform-specific configurations
Detailed Improvements
- Fixed issue where C/C++ standard wasn't properly written to CMake configuration
- Improved spinner functionality with better cleanup and status handling
- Fixed potential deadlocks in progress reporting system
- Better handling of build paths with cross-compilation targets
- More reliable package configuration generation
Usage Examples
Generate CMake with proper C++ standard support:
cforge clean
cforge build
View detailed build progress with verbose output:
cforge build --verbosity verbose
Build a workspace with proper dependency ordering:
cforge build
Installation
Update to the latest version:
cargo install [email protected]
Bug Fixes
- Fixed C/C++ standard not being correctly written to CMake files
- Resolved spinner visualization issues during long-running operations
- Fixed potential race conditions in progress reporting
- Improved error handling during build failures
- Enhanced path resolution for cross-compilation targets
Limitations
- Complex project configurations might still require manual CMake customization
- Some compiler-specific features may require additional configuration
beta-v1.4.3
CForge Release beta-v1.4.3
Packaging System Improvements
CForge beta-v1.4.3 addresses critical issues in the packaging system, focusing on reliability and cross-platform compatibility.
Key Improvements
Packaging System Enhancements
- Improved NSIS installer detection and installation on Windows
- Enhanced cross-platform package generation support
- Implemented fallback strategies for package generation
- More informative error messages during packaging
Build Configuration Support
- Better handling of Debug/Release configurations during packaging
- Improved support for package formats (ZIP, NSIS, DEB, RPM)
- Enhanced dependency detection mechanisms
Technical Refinements
- Resolved path resolution issues in package generation
- Improved CMake configuration for packaging
- Enhanced error capture and reporting
- More robust package type conversion and validation
Detailed Improvements
- Fixed inconsistent package naming across operating systems
- Improved handling of project metadata during package creation
- Enhanced compatibility with compiler and build system configurations
Usage Examples
Basic package generation:
cforge packageSpecifying package type:
cforge package --type zipVerbose package generation:
cforge package --verbosity verboseInstallation
Update to the latest version:
cargo install [email protected]Bug Fixes
- Resolved NSIS installer detection issues on Windows
- Fixed path resolution for package generation
- Improved error handling during package creation
- Enhanced cross-platform package generation support
Limitations
- Package generation may require platform-specific tools
- Some complex project configurations might need manual intervention